// entity/user.js
var User = Class('User', {
Base: Class.Serializable({
activity: Date
}),
Validate: {
activity (date) {
if (date.getFullYear() !== new Date().getFullYear())
return 'Current year expected';
}
},
_id: null,
activity: null,
points: 0,
});
// client/user.js
Class.patch('User', {
Store: Class.Remote('/rest/user/:_id')
})
// server/user.js
Class.patch('User', {
Store: Class.MongoStore.Single('users', {
indexes: [ { date: 1} ]
})
});
// Browser OR NodeJS
var user = new User({
_id: 'foo',
activity: new Date
});
user.save().done(() => {});
//
user
.patch({
$inc: {
points: 2
}
})
.done(() => {})
//
User.fetch({ _id: 'foo' }).done(user => {});
User.fetch({ points: '>10' }).done(user => {});
// Server, http endpoint sample
module.exports = atma.server.Service({
'$post /' (req) {
var user = new User(req.body),
error = Class.validate(user);
if (error)
return this.reject(error);
user.save().pipe(this);
}
})
var Request = require('request'),
Class = require('atma-class');
module.exports = function prepareTiles(tiles, url, ssid, callback) {
var await = new Class.Await();
tiles.forEach(function(tile) {
prepareTile(tile, url, ssid, await.delegate());
});
await.always(function(){
callback(tiles);
});
};
function prepairTile(tile, url, ssid, callback) {
var meta = title.metadata;
switch (meta.tiletype) {
case 'mark':
var search = qs.stringify({
url: url,
ssid: ssid,
mark: meta.mark,
type: meta.type,
format: meta.format,
graph: meta.graph
});
val_resolve(
'http://127.0.0.1:8080/getSingleMark?' + search
, tile
, callback);
break;
case 'youtube':
case 'telcall':
case 'skypecall':
val_onComplete(tile, meta, callback);
break;
}
}
function val_resolve(url, tile, callback) {
Request.get(url, function(error, res, body) {
if (error)
console.error(error)
val_onComplete(tile, body, callback);
});
}
function val_onComplete(tile, model, callback) {
tile.metadata.value = tpl.make(
tile.metadata.tiletype, model
);
callback();
}