| sgm new APP_NAME crea la estructura de la app en la carpeta APP_NAME, si no existe la crea, si existe la usa como base
| sgm generate NAME crea un Model, Controller, Routes y Test con el nombre NAME dentro de las carpetas correspondiente. si existe te PUTEA
Debug y Start
| sgm start Inicia la APP en modo desarrollo (Como app)
| sgm start -t Corre los Tests de la APP
| sgm start -p Inicia la APP en modo Produccion (Como un Servicio)
| sgm stop Detiene la APP en modo Produccion
{
// Rutas del Modelo Accion en el Control del Modelo
'GET /personas': 'findAll'
, 'GET /personas/:id': 'findOne'
, 'GET /personas/count': 'count'
, 'GET /personas/describe': 'describe'
, 'PUT /personas/:id': 'update'
, 'PUT /personas': 'create'
, 'POST /personas/filter': 'filter'
, 'POST /personas/find': 'find'
, 'DELETE /personas/:id': 'delete'
// Rutas de sus Assocs (Si tiene) Accion en el Control del Modelo
, 'GET /personas/:id/:assoc': 'resolveAssoc'
, 'GET /personas/:id/:assoc/count': 'countAssoc'
, 'GET /personas/:id/:assoc/describe': 'describeAssoc'
, 'POST /personas/:id/:assoc': 'filterAssoc'
, 'PUT /personas/:id/:assoc': 'createAssoc'
, 'DELETE /personas/:id/:assoc': 'deleteAssoc'
}
Estructura Modelo
{
table_name: 'personas'
, adapter: 'mongo'
, content_type: 'hal'
, beforeValidate: function() {}
, beforeCreate: function() {}
, afterCreate: function() {}
, beforeUpdate: function() {}
, afterUpdate: function() {}
, beforeDestroy: function() {}
, afterDestroy: function() {}
, toJSON: function() {}
, toHAL: function() {}
, attributes:
{
// Opcional
id:
{
type: 'Primary Key'
, unique: true
}
, nombre: 'String'
// No es Opcional
, Madre:
{
type: 'Foreing Key'
, model: 'Personas'
}
, Padre:
{
type: 'Foreing Key'
, model: 'Personas'
}
, Hijos:
{
type: 'Foreing Key'
, model: 'Personas'
}
}
, associations:
{
Madre:
{
type: 'belongs-to'
, model: 'Personas' // Modelo con que se relaciona
}
, Padre:
{
type: 'belongs-to'
, model: 'Personas' // Modelo con que se relaciona
}
, Hijos:
{
type: 'has-many'
, model: 'Personas' // Modelo con que se relaciona
}
, Nietos:
{
type: 'has-many:through'
, embedded: 'partial'
, model: 'Personas' // Modelo con que se relaciona
, through: 'Hijos' // Assoc de la Instancia
, association: 'Hijos' // Assoc de la/s Instancias del atributo Through de arriba
}
}
}
Otras Consideraciones
TipoEmbedded (String)
- none > no sera embebido
- partial > sera embebido pero sus embebidos no tendran embebidos
- full > sera embebido pero sus embebidos definiran si tendran o no embebidos
TipoCollection (String[type] | Object)
- type: Tipo de Collection (String)
Valor por defecto: list
Posibles Valores: list - pageable - scrollable
- ipp: LIMIT (Integer)
Limite de items por pagina
Valor por defecto: 10
Si 0 entonces no tiene limites
- page: OFFSET (Integer)
Pagina de inicio
Valor por defecto: 1
Si 0 entonces: 1
- sortBy Tipo de Orden
Valor por defecto: Atributo ID, Criterio menor a mayor (<)
atribute: Atributo del Modelo (String)
criteria: Criterio de Comparacion (String)
- < Menor a Mayor
- > Mayor a Menor