Nickolay - KiokuJS.Backend.Batch-0.01

Documentation | Source
Class('KiokuJS.Backend.Batch.Server', {
    
    trait       : 'JooseX.CPS',

    
    has : {
        backendClass            : { required : true },
        backendParams           : null,
        
        backend                 : null,
        
        baseURL                 : '',
        
        app                     : { required : true },
        
        // TODO prefetch requested entries in-depth
        deepPrefetch            : false
    },
    

    methods : {
        
        initialize : function () {
            this.backend    = new this.backendClass(this.backendParams || {})
            
            var app         = this.app
            var baseURL     = this.baseURL.replace(/\/$/, '')
            
            var me          = this
            
            app.put(baseURL + '/get/index.html', function (req, res) {
                var ids = req.body
                
                me.onGet(ids).except(function (e) {
                    
                    res.send({
                        error : me.encodeException(e)
                    })
                    
                }).andThen(function (result) {
                    
                    res.send({
                        result : result
                    })
                })
            })
            
            
            app.put(baseURL + '/insert/index.html', function (req, res) {
                var data = req.body
                
                me.onInsert(data.entries, data.mode).except(function (e) {
                    
                    res.send({
                        error : me.encodeException(e)
                    })
                    
                }).andThen(function (result) {
                    
                    res.send({
                        result : result
                    })
                })
            })
            
            
            app.put(baseURL + '/remove/index.html', function (req, res) {
                var ids = req.body
                
                me.onRemove(ids).except(function (e) {
                    
                    res.send({
                        error : me.encodeException(e)
                    })
                    
                }).andThen(function () {
                    
                    res.send({
                        result : []
                    })
                })
            })
            
            
            app.put(baseURL + '/exists/index.html', function (req, res) {
                var ids = req.body
                
                me.onExists(ids).except(function (e) {
                    
                    res.send({
                        error : me.encodeException(e)
                    })
                    
                }).andThen(function (result) {
                    
                    res.send({
                        result : result
                    })
                })
            })
        },
        
    
        encodeException : function (e) {
            return this.backend.encodePacket({ error : e }, [])
        }
        
    },
    
    
    continued : {
        
        methods : {
        
            onGet : function (ids) {
                this.backend.get(ids).now()
            },
            
            
            onInsert : function (entries, mode) {
                this.backend.insert(entries, mode).now()
            },
            
            
            onRemove : function (ids) {
                this.backend.remove(ids).now()
            },
            
            
            onExists : function (ids) {
                this.backend.exists(ids).now()
            }
        }
    }
})