this
init: (db) ->
+ unneded_stmts = (stmt, idx) ->
+ stmt.indexOf("PRAGMA")==0 or
+ stmt.indexOf("BEGIN TRANSACTION")==0 or
+ stmt.indexOf("COMMIT")==0 or
+ /^\s*$/.exec stmt
+
if not db?
db = @db
console.log "initializing DB"
db.changeVersion "", Readings.config.get 'db_version'
- $.ajax "initdb.sql"
+ $.ajax Readings.config.get('initdburl'),
type: "GET"
dataType: 'text'
success: (sql) =>
sql = sql.split /;\n/
- sql = sql.slice(1,-2)
+ sql = $.grep sql, unneded_stmts, true
create = (tx) =>
for stmt in sql
- console.log stmt
tx.executeSql stmt, [],
(tx,rs) => true,
- (tx,err) => console.error(err)
+ (tx,err) =>
+ console.error("error for #{stmt}")
+ console.error(err)
db.transaction create
error: =>
@wrap_error()
withBooks: (tag, cb) ->
- @db.readTransaction (tx)=>
+ @db.readTransaction (tx) =>
console.log "books in tag: #{tag.books}"
tx.executeSql "SELECT * FROM book WHERE id IN (#{tag.books}) ORDER BY sort_key",
[], ((tx, rs) => cb(@map_rs(rs, (rec)->new Readings.Book(rec)))), @wrap_error()
+
+ fetchBook: (book_id, fetch_contents, cb) ->
+ unless typeof book_id == "number" or /^[0-9]+$/.exec book_id
+ throw Error "book_id = '#{book_id}' is not a number"
+
+ @db.readTransaction (tx) =>
+ tx.executeSql "SELECT * FROM book WHERE id=?", [book_id],
+ (tx, rs) =>
+ if rs.rows.length > 0
+ book = new Readings.Book rs.rows.item(0)
+ if fetch_contents and not book.is_local()
+ book.fetch (book) ->
+ cb(book)
+ else
+ return cb(book)