uzullaがブログ

uzullaがブログです。

CoffeScriptとWeb SQL Database

うーん、こんな風にかけばいいのかなあ。
なんかここまでくると、せっかくのCoffeescriptなのに、冗長だよね。
後、関数渡しのコールバックが多すぎて、OOPやろうとするとクロージャ連発で酷い事になる。グローバル変数をつかっちゃえば、大分スッキリするんだけど…。

class List2 
    db: null
    table_name: 'list'
    SCHEMA: '(id, name, site_num, updated_at)'

    constructor: ()->
        @db = window.db
        @checkDB()

    checkDB: ->
        _this = this 
        @db.transaction( # <-ここのカッコがキモい
            do (_this) ->
                return (tx) ->
                    console.log 'db check start'
                    sql = "SELECT * FROM #{_this.table_name}"
                    tx.executeSql(
                        sql
                        []
                        (tx, rs)-> 
                            console.log 'db check ok'
                            for i in [0...rs.rows.length]
                                row = rs.rows.item(i)
                                console.log row
                    )

            do (_this) ->
                (error) ->
                    console.log 'db select fail'
                    _this.initDB()

            () ->
                console.log 'db check end'

        )# <-正直ここのカッコがキモい
        
    initDB: ->
        _this = this
        @db.transaction(
            do (_this)->
                return (tx) ->
                    console.log 'do db init '
                    sql = "CREATE TABLE IF NOT EXISTS #{_this.table_name} #{_this.SCHEMA};"
                    console.log sql
                    tx.executeSql( 
                        sql
                        []
                        (tx, rs)-> 
                            console.log 'db #{_this.table_name} table init.'
                    )

            (error) ->
                console.log 'db init fail'
                
            ->
                console.log 'db init end'

        )
        
@test = new List2

しかし…、これがブラウザで動くってのがすごいんだよなw、なんかPHPにみえるし。