Open fdvj opened 6 years ago
Especies, (Species) representa el rango taxonómico mas básico de clasificación de un ser viviente u organismo.
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.
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.
Requisitos
POST /species
GET /species
GET /species/{speciesId}
PUT /species/{speciesId}
Notas