livesqrd-sdk
v0.1.7
Published
Live Sqrd Node sdk
Downloads
6
Readme
Live Sqrd SDK - lsq.io
Allows you to use your api
===
start with setup with a require and your domain with the token
var LSQ = require("./lib")
,lsq= new LSQ("your-url.lsq.io","yourToken");
then you can do
- Create
- Read
- Update
- Delete
Just specify the collection your calling then the data your passing
Create
lsq.create(collection,model,options,function(err,result,total,response){
console.log(err,result)
})
Read
lsq.read(collection,query,options,function(err,result,total,response){
console.log(err,result)
})
Update
lsq.update(collection,query,options,model,function(err,result,total,response){
console.log(err,result)
})
Delete
lsq.delete(collection,query,options,function(err,result,total,response){
console.log(err,result)
})
The collection is the data collection name (string) :
Model is the data that will become the data object (object):
Data that will be saved or updated The data being updated can be saved with deep model meaning if you have an object
{ name : {
first :"john"
,last :"smith"
}
}
you can update just the first name with :
{ "name.first":"jane"}
or with arrays you can :
{ toys : ["car","truck","drums"] }
you can update just truck with :
{ "toys.1":"bus"}
where 1 is the index
Query is the search lookup using normal mongodb queries (object):
Mongo Basic Queries Mongo Adv Queries just {} will return all and with the addition of just
{ _id : ""}
Options (object) [optional]:
- skip (int)
- limit (int)
- sort (object)
Schemas
Instance
- Short life span, public user client identification information
- Created and destroyed with Socket.io events
- Output
{
"touch": false,
"date": "2013-07-12T20:11:13.598Z",
"os": "Mac OS X",
"osVersion": "10.8.4",
"browser": "Chrome",
"version": "27.0.1453.116",
"device": "Desktop",
"deviceType": "pc",
"client": "51def86fe7ae632a2b0000b8",
"profile": "41aef86fa4ae62fa2b0000a8",
"page": "projects",
"_id": "51e062e1178e53e46500000e",
"height": 1079,
"width": 1049
}
- Save custom terms, etc, in the states ObjectId
"states": {
"type": "Schema.Types.Mixed"
}
- Ex: save number of clicks user makes, and number of no results are served
"states": {
"click_counter": 1,
"noresults": 11
}
##Client
Session based storage and identification, used for user login, credentials, and other pertaining parameters
Session based entails anonymous and profile attached logins. Unlike Instances they have a long life span: 30 days (subject to change)
Output
{
"_id": "51e06df7a3cd97400c000001",
"a": "uebkjvhg9uwdBBdBflJ1zvej",
"date": "2013-07-12T20:58:31.585Z",
"email": "[email protected]",
"gender": "m",
"page": "login",
"path": "uebkjvhg9uwdbbdbflj1zvej",
"profile": "41aef86fa4ae62fa2b0000a8",
"photo": "",
"states": {},
"timezone": 0,
"event": [],
"ver": false,
"lang": "en",
"v": [],
"login": [],
"ip": [
"165.254.85.1"
]
}
- ver is for verification of a user via email: boolean
- a is the session token: auto generated string
- login is the array of oAuth credentials and there tokens for later access: can be multiple, e.g., Facebook, twitter, Linkedin, etc.
- Save custom terms, etc, in the states Object
"states": {
"type": "Schema.Types.Mixed"
}
- Ex: save number of pages user goes to, and number of errors are served
"states": {
"page_counter":1,
"errors":11
}
##Profile *Used for user profiles, levels (groups, collaborations, companies, teams)
{
"states": {
"type": "Schema.Types.Mixed",
"hidden": true
},
"body": {
"type": "Schema.Types.Mixed",
"hidden": true
},
"title": {
"type": "String",
"required": true
},
"path": {
"type": "String",
"required": true,
"unique":true
},
"photo": {
"type": "String"
},
"gender": {
"type": "String",
"lowercase": true,
"trim": true
},
"info": {
"type": "String",
"editor": true
},
"email": {
"type": "String",
"lowercase": true,
"trim": true
},
"group": {
"type": "String",
"default": "",
"lowercase": true,
"trim": true
},
"lang": {
"type": "String"
},
"link":{"type": "Schema.Types.Mixed"},
"contact":{"type": "Schema.Types.Mixed"},
"birthday": {
"type": "Date"
},
"timezone":{
"type":"Number"
},
"profile": [
{
"id": {
"type": "Schema.Types.ObjectId",
"ref": "profile"
},
"title": {
"type": "String"
},
"start": {
"type": "Date"
},
"end": {
"type": "Date"
}
}
]
}
- Example Usage
{
"__v": 0,
"_id": "51cf7a5894831db810000009",
"email": "[email protected]",
"gender": "m",
"lang": "en",
"link": {
"facebook": "https://www.facebook.com/zuck",
"twitter": "https://www.twitter.com/mark",
"linkedin": "http://www.linkedin.com/pub/mark-zuckerberg/46/895/358"
},
"path": "yj5iluktq5rlhgqcgvdaxdrq",
"photo": "",
"timezone": -4,
"title": "First Last",
"profile": [],
"group": "client",
"body":{
"firstname": "Mark",
"lastname": "Zuckerberg"
}
"states":{
"rating": 20
}
}
##Role
- Use to define rights, such as create, delete, update, read, add, remove, edit, destroy, master etc.
- CRUD (Create Read Update Delete): for the current item.
- The defined role permission set is applied to different Objects such as Levels, Loaders, Items
"role": {
"states": {
"type": "Schema.Types.Mixed"
},
"path": {
"type": "String",
"required": true,
"lowercase": true,
"trim": true,
"unique": true
},
"title": {
"type": "String",
"required": true
},
"create": {
"type": "Number",
"default": 0
},
"delete": {
"type": "Number",
"default": 0
},
"update": {
"type": "Number",
"default": 0
},
"read": {
"type": "Number",
"default": 0
},
"add": {
"type": "Number",
"default": 0
},
"remove": {
"type": "Number",
"default": 0
},
"edit": {
"type": "Number",
"default": 0
},
"destroy": {
"type": "Number",
"default": 0
},
"master": {
"type": "Number",
"default": 0
},
"custom": {
"type": "Schema.Types.Mixed"
}
}
- Example role: owner with all permissions, master.
{
"data":{
"token":"123456",
"model": {
"title":"owner",
"path":"owner",
"master": 1
},
"query":{},
"request":"create"
}
}
- Example role: private, default role, by not defining a permission, the default rights are 0, none.
{
"data":{
"token":"123456",
"model": {
"title":"private",
"path":"private"
},
"query":{},
"request":"create"
}
}
- Example role: public, default role, default state for read only.
{
"data":{
"token":"123456",
"model": {
"title":"public",
"path":"public",
"read": 1
},
"query":{},
"request":"create"
}
}
##Loader
- Used for projects
"loader": {
"states": {
"type": "Schema.Types.Mixed",
"hidden": true
},
"path": {
"type": "String",
"lowercase": true,
"trim": true
},
"title": {
"type": "String",
"required": true
},
"photo": {
"type": "String"
},
"level": {
"type": "Schema.Types.ObjectId",
"ref": "level",
"required": true
},
"publish": {
"type": "Boolean",
"default": true
},
"date": {
"type": "Date",
"required": true
},
"body":{
"type": "Schema.Types.Mixed"
},
"module": [{
"item":{
"type": "Schema.Types.ObjectId",
"ref": "item"
}
,"extra":{
"type": "Schema.Types.Mixed"
}
,"group":{
"type": "String"
}
}],
"time": {
"now": {
"type": "Number",
"default": 0
},
"jump": {
"type": "Number",
"default": 0
},
"nextTime": {
"type": "Number",
"default": 1
},
"gotoTime": {
"type": "Number",
"default": -2
},
"cutTime": [
{
"time": {
"type": "Number"
},
"duration": {
"type": "Number"
}
}
],
"tags":{"type":"[String]"}
},
"loader": {
"type": "Schema.Types.ObjectId",
"ref": "loader"
},
"role": {
"type": "Schema.Types.ObjectId"
},
"group": {
"type": "String",
"lowercase": true,
"trim": true
},
"permisson": [
{
"id": {
"type": "Schema.Types.ObjectId",
"ref": "profile"
},
"role": {
"type": "Schema.Types.ObjectId",
"ref": "role"
}
}
]
}
##Item
"item": {
"states": {
"type": "Schema.Types.Mixed",
"hidden": true
},
"path": {
"type": "String",
"lowercase": true,
"trim": true
},
"title": {
"type": "String",
"default": ""
},
"photo": {
"type": "String"
},
"body": {
"type": "Schema.Types.Mixed"
},
"group": {
"type": "String",
"default": "",
"lowercase": true,
"trim": true
},
"x": {
"type": "Number"
},
"y": {
"type": "Number"
},
"z": {
"type": "Number"
},
"width": {
"type": "Number"
},
"height": {
"type": "Number"
},
"color": {
"type": "String"
},
"role":{
"type": "Schema.Types.ObjectId",
"ref": "role"
},
"permisson": [
{
"id": {
"type": "Schema.Types.ObjectId",
"ref": "profile"
},
"role": {
"type": "Schema.Types.ObjectId",
"ref": "role"
}
}
],
"item": {
"type": "Schema.Types.ObjectId",
"ref": "item"
},
"lock": {
"type": "Schema.Types.Mixed"
},
"date": {
"type": "Date"
},
"geo": {
"type": "[Number]",
"index": "2dsphere",
"sparse": true
},
"box":{
"type": "[Number]",
"index": "2d",
"sparse": true
},
"due": {
"date": {
"type": "Date"
},
"period": {
"type": "Number"
},
"freq": {
"type": "Number"
}
},
"tags":{"type":"[String]"}
}