The AOC Framework
github logodiscord logo

EMPEZANDO

Base de datos #

En la aplicación por defecto (creada con aoc-cli), encontraréis una carpeta llamada sql, con un archivo llamado 0001-nombre-de-su-aplicacion-bootstrap.sql.

El archivo sql inicial #

Este archivo contiene la creación de la tabla public.meta, que contiene las columnas de usuario de creación, fecha de creación, usuario de modificación y fecha de modificación.

Esta tabla está pensada para que sea heredada en todas las tablas de la base de datos. Estas columnas las gestiona internamente el framework.

El archivo también crea la tabla de usuarios users.aoc_user, con los campos de nombre de usuario, email, contraseña y nombre completo. Esta tabla puede modificarse siempre que se reflejen los cambios en la configuración del framework.

El mapeado de los campos se realiza en app.module.ts en el cliente:

  AocAppModule.forRoot(
    Config,
    new AocUserConfig(AocUser, { fieldMap: { username: 'username', password: 'pass' }}),
    ...

y en el servidor, en el archivo user-definition.ts:

@AocUserDefinition(new AocUserConfig(AocUser, {
  fieldMap: {
    username: 'username',
    password: 'pass'
  }
}))
class UserDefinition {}

Aplicar archivos sql a la base de datos #

A medida que vaya creando su aplicación, tendrá que crear más tablas y relaciones. Puede añadir nuevos archivos 0002-lo-que-sea.sql, 0003-otra-tabla.sql. En cada archivo puede ir añadiendo o modificando tablas, relaciones, o insertando filas, etc.

Con el comando aoc-cli generate database puede ejecutar todos los archivos .sql que se encuentren en esa carpeta. Ejecute el comando con --help o consulte la sección de documentación sobre aoc-cli.

Obviamente, también puede ejecutar las órdenes sql manualmente sobre su servidor, o utilizar cualquier otra técnica de migración que estime oportuna.

Si quiere que sus transacciones entre en el ciclo de vida de la aplicación (ejecutando suscriptores de mikro-orm por ejemplo y otros hooks), le recomendamos los ejecute a través de mikro-orm, con las entidades en memoria, etc.

Rehacer modelos y entidades #

Cada vez que la estructura de la base de datos cambia, tiene que actualizar los modelos y las entidades de typescript para que reflejen la nueva estructura y así pueda usarla en el código de su aplicación.

  • Modelos: los modelos son archivos typescript como por ejemplo aoc-user.ts, cliente.ts, factura.ts, contacto.ts, que se encuentran en el cliente. Son comparables a los POJO, POCO, etc.
  • Entidades: las entidades son como los modelos pero obedecen a mikro-orm, con los decoradores y configuraciones necesarios.
  • ModelConfigs: son configuraciones extendidas que se utilizan en el cliente.

Para rehacer tanto los modelos como las entidades, utilizaremos aoc-cli generate entities. Añada --help para ver la ayuda del comando. El archivo necesario que tiene la configuración para poder generar correctamente tanto modelos como entidades, se llama aoc-entities-config.json. Lo encontrará en la raíz de su aplicación, acompañado por un archivo aoc-entities-secrets.json para especificar (o sobrescribir) parámetros más locales como la conexión a la base de datos o las rutas en las que guardar modelos y entidades.

El archivo aoc-entities-config.json #

El esquema de definición json aoc-entities-config.schema.json le proporciona una explicación sobre cómo confeccionar este archivo. En la siguiente tabla le explicamos las propiedades:

Propiedad Descripción
schemas Un array con los nombres de los esquemas que quiere procesar
entityBaseClass La clase base de la que heredarán todas las demás entidades
modelBaseClass La clase base de la que heredarán todos los demás modelos
db Parámetros de conexión a la base de datos
modelTargetPath Ruta absoluta o relativa donde se guardarán los modelos
entityTargetPath Ruta absoluta o relativa donde se guardarán los entidades
modelConfigTargetPath Ruta absoluta o relativa donde se guardarán los modelconfigs
jsonColumns Array de estructuras JSON que use en campos de la base de datos
pivotTables Definiciones de tablas pivote NM (ver mikro-orm)
constEnums Definiciones de const enums de typescript para columnas
virtualProperties Propiedades virtuales que quiera generar en sus entidades (ver mikro-orm)
eager Carga automática de entidades, sin tener que usar populate (ver mikro-orm)
lazy Array de campos de carga diferida formato esquema.tabla.columna
embedTables Array de tablas para clases empotrables que se empotrarán en entidades
embedMap Objeto que define mapeado entre tablas y empotrables
cascades Objeto que define eliminación en cascada para claves extranjeras
threadSafe Array de tablas (entidades) que serán seguros para concurrencia en operaciones de api
inherits Tablas que heredan de otra tabla diferente a la base

Cualquiera de estos parámetros puede estar en el archivo aoc-entities-secrets.json y se aplicarán.

Por favor, busque en Issues y Discussions en Github para más información

© 2024 Atlantis of Code. All rights reserved.
All trademarks are the property of their respective owners.