sota-core
v2.2.31
Published
Sotatek's server skeleton by NodeJS
Readme
Sota Framework for NodeJS server
0.Setup environment
Development stack
Node 4.1.1
MySQL Ver 14.14 Distrib 5.6.26, for osx10.11 (x86_64)Required global modules
npm install -g node-inspector
npm install -g mocha
npm install -g istanbul1.Structure overview

2.Folders organization
Permanent files and folders
app/ # Here come the business stuffs of our app
controllers/ # Don't need to explain this obvious things...
models/
services/
Main.js # Initializer script of the app
boot/ # Scripts to start app as a daemon
config/
Config.js # Should be a symlink to one of following config files
Config_Dev.js # Config for development enviroment
Config_Prod.js # Config for production enviroment
...
Config_Clgt.js # We may have various environments though
Routes.js #
core/ # Core of Sota framework
public/ # Here come static files
views/ # Enough obvious as wellOptional files and folders
helpers/ # Place multi-model handlers here (contain business/logic)
libs/ # Sometimes we need to use external libs, put them here
utils/ # For common, static handlers (just deal with primitive data)3.Code APIs
Classes
BaseClass
initialize($super, params)extend(superclass, interfaces)
ControllerFactory
create(func)createNoAuth(func)authenticate(req, res, callback)...
// TODO: determine put all handled path in routing files,
// or separate in each controllerBaseController
// TODO: create sample filesBaseService
// Almost no common things
// Handle business for particular applicationBaseModel
initialize($super, dataSource, adapter)createTable(callback)selectOne(options, callback)selectAll(options, callback)selectCount(options, callback)insert(entity, callback)insert(entities, callback)update(entity, callback)update(options, callback)selectOrInsert(options, callback)updateOrInsert(entity, callback)delete(entity, callback)delete(entities, callback)delete(options, callback)beginTransaction(callback)commit(callback)rollback(callback)exec(sql, options, callback)
BaseEntity
initialize($super, model)save(callback)beforeSave($super, callback)afterSave($super, callback)delete(callback)beforeDelete($super, callback)afterDelete($super, callback)reload(callback)
BaseDataSource
initialize($super, options)
TODO: Determine whether we need this class...BaseAdapter
initialize($super, config)select(options, callback)insert(options, callback)update(options, callback)delete(options, callback)
4.Backlog - TBD
- Standard/expandable user table
- Session info/Authentication
- Processes pooling/management
- Failure handling
- Database connection pooling/management
