codenautas/backend-plus

View on GitHub
examples/fichero/server/table-fichas.js

Summary

Maintainability
B
4 hrs
Test Coverage
"use strict";

module.exports = function(context){
    var allow = function(roles){
        return {
            select:!!roles[context.user.rol],
            insert:context.user.rol==='admin',
            update:context.user.rol==='admin',
            delete:context.user.rol==='admin',
        };
    }
    var A=allow({admin: true});
    var U=allow({admin: true, user:true});
    var W={select:true, insert:true, update:true, delete:true};
    return context.be.tableDefAdapt({
        name:'fichas',
        title:'fichas',
        editable:true,
        editableFieldDef:true,
        fields:[
            {name:'autor'          ,typeName:'text'    ,label:'Autor de la obra'     , allow:W},
            {name:'fichanro'       ,typeName:'integer' ,label:'Número de ficha'      , allow:W},
            {name:'titulo'         ,typeName:'text'    ,label:'Título'               , allow:W},
            {name:'annio'          ,typeName:'integer' ,label:'Año de realización'   , allow:W},
            {name:'medida1'        ,typeName:'integer' ,label:'Alto en cm'           , allow:W},
            {name:'medida2'        ,typeName:'integer' ,label:'Ancho en cm'          , allow:W},
            {name:'medida3'        ,typeName:'integer' ,label:'Profundida en cm'     , allow:W},
            {name:'tecnica'        ,typeName:'text'    ,label:'Técnica'              , allow:W},
            {name:'ubicacion'      ,typeName:'text'    ,label:'Ubicación'            , allow:U},
            {name:'propietario'    ,typeName:'text'    ,label:'Propietario'          , allow:U},
            {name:'publicado'      ,typeName:'boolean' ,label:'¿Se ha publicado?'    , allow:W},
            {name:'enmarcado'      ,typeName:'boolean' ,label:'¿Está enmarcado?'     , allow:U},
            {name:'imagenadelante' ,typeName:'text'    ,label:'Imagen principal'     , allow:W},
            {name:'imagenatras'    ,typeName:'text'    ,label:'Imagen secundaria'    , allow:U},
            {name:'miniatura'      ,typeName:'text'    ,label:'Imagen en miniatura'  , allow:U},
            {name:'observaciones'  ,typeName:'text'    ,label:'Observaciones'        , allow:W},
            {name:'costo'          ,typeName:'integer' ,label:'Costo estimado'       , allow:A},
            {name:'notas'          ,typeName:'text'    ,label:'Notas internas'       , allow:A},
        ],
        primaryKey:['fichanro'],
        foreignKeys:[
            {references:'autores', fields:['autor']}
        ],
        detailTables:[
            {table: 'apariciones-medios', fields:['fichanro', 'fichanro'], abr:'A', label:'apariciones'}
        ]
    });
}