var db = module.exports var connection = require("./bookshelf") var bookshelf = connection.bookshelf var knex = connection.knex var Folder = db.Folder = bookshelf.Model.extend({ tableName: 'folders', hasTimestamps: true, }) var File = db.File = bookshelf.Model.extend({ tableName: 'files', hasTimestamps: true, }) var Job = db.Job = bookshelf.Model.extend({ tableName: 'job', hasTimestamps: true, }) var Task = db.Task = bookshelf.Model.extend({ tableName: 'tasks', hasTimestamps: true, }) db.crud = function(type, model) { return { index: (q) => { return model.query( (qb) => { const limit = q.limit || 100 const offset = q.offset || 0 if (limit) { delete q.limit } if (q.offset) { delete q.offset } if (Object.keys(q).length > 0) qb.where(q) qb.orderBy("id", "desc") if (limit) qb.limit( limit ) if (offset) qb.offset( offset ) return qb }).fetchAll() }, show: (id) => { return new model({'id': id}).fetch() }, create: (data) => { return new model(data).save() }, update: (id, data) => { return new model({'id': id}).save(data) }, destroy: (id) => { return new model({'id': id}).destroy(data) }, } } db.getFolders = function(id) { var model = new Folder({'id': id}) return model.fetch() } db.getFolderFiles = function(id) { return File.query(function(qb){ qb.where('folder_id', '=', id).orderBy("id", "desc") }).fetch() } db.getLatest = function () { return Image.query(function(qb){ qb.orderBy("id", "desc").limit(1) }).fetch() } db.getRandom = function () { return Image.query(function(qb){ qb.orderBy(knex.raw('RAND()')).limit(1) }).fetch() } db.createImage = function(url){ return new Image({ url: url, shorturl: "" }).save() }