adoptapanama / admin-api

Adopta Panama Core HapiJS API Services
MIT License
5 stars 15 forks source link

Especies #11

Open fdvj opened 6 years ago

fdvj commented 6 years ago

Requisitos

Notas

zgudino commented 6 years ago

Especies

Especies, (Species) representa el rango taxonómico mas básico de clasificación de un ser viviente u organismo.

Entidad

Representación desde punto de vista RDBMS.

Field Type Null Key Default Extra
id char(36) NO PRI NULL
name varchar(254) NO UNI NULL
created_at datetime NO CURRENT_TIMESTAMP
updated_at datetime NO CURRENT_TIMESTAMP

Campo id si no se asigna un valor explícito por el backend, RDBMS automáticamente le generara y almacenera UUID para dicha tupla. Muy similar para los campos createdAt y updatedAt.

Todas operaciones SELECT, UPDATE, INSERT y DELETE son permitidas, sin embargo DELETE con lleva un cuidado extra que debe ser considerado:

species puede ser eliminada siempre y cuando no exista ninguna referencia a su llave primaria, id, desde otra entidad.

Llaves forense son de gran ayuda y fáciles de implementar. Permiten mantener consistencia, parte de filosofía ACID, al punto que podemos garantizar integridad referencial.

Modelo

Representación desde punto de vista JavaScript.

const Sequelize = require('sequelize')

module.exports = (db) => {
    const Specie = db.define('Specie', {
        id: {
            type: Sequelize.UUID,
            primaryKey: true,
            defaultValue: Sequelize.UUIDV4
        },

        name: {
            type: Sequelize.STRING(254),
            allowNull: false,
            unique: true
        }
    }, {
        tableName: 'species'
    })
}

Modelo es, esencialmente, idéntico al modelo de entidad. Sequelize es tan amable que se encarga por si mismo de construir, muy por debajo, los esquemas de entidad necesarios.

Notara la ausencia de campos createdAt y updatedAt en el modelo Sequelize. Sequelize, por defecto, agrega timestamps a sus modelos de manera implícita.