Los Modelos User y Story
Ahora que la conexión a la base de datos está establecida, puede crear sus dos entidades User
y Story
.
La entidad User
será el modelo utilizado por el framework para identificar a los usuarios y la entidad Story
representará las publicaciones de los usuarios.
El modelo User
Abra el archivo user.entity.ts
del directorio entities
y añada cuatro nuevas propiedades a su modelo: email
, password
, name
y avatar
.
La columna avatar
contendrá las rutas de acceso a las imágenes del perfil.
También tendrá que exportar un modelo adicional DatabaseSession
del paquete @foal/typeorm
. No necesita preocuparse por ello ahora, se utilizará más adelante en el tutorial cuando añada la autenticación.
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class User extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@Column({ unique: true })
email: string;
@Column()
password: string;
@Column()
name: string;
@Column()
avatar: string;
}
// This line is required. It will be used to create the SQL session table later in the tutorial.
export { DatabaseSession } from '@foal/typeorm';
El modelo Story
A continuación, cree su segunda entidad.
foal generate entity story
Abra el nuevo archivo y añada tres nuevas propiedades: autor
, título
y enlace
.
import { BaseEntity, Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
import { User } from './user.entity';
@Entity()
export class Story extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@ManyToOne(type => User, { nullable: false })
author: User;
@Column()
title: string;
@Column()
link: string;
}
Por defecto, TypeORM permite que las relaciones many-to-one sean anulables. La opción pasada al decorador especifica que ésta no puede serlo.
Ejecute las migraciones
Por último, cree las tablas en la base de datos. Genere las migraciones a partir de las entidades y ejecútelas.
npm run makemigrations
npm run migrations
Se añaden tres nuevas tablas a la base de datos: las tablas user
y story
y una tabla sessions
.
+------------+-----------+-------------------------------------+
| user |
+------------+-----------+-------------------------------------+
| id | integer | PRIMARY KEY AUTO_INCREMENT NOT NULL |
| email | varchar | UNIQUE NOT NULL |
| password | varchar | NOT NULL |
| name | varchar | NOT NULL |
| avatar | varchar | NOT NULL |
+------------+-----------+-------------------------------------+
+------------+-----------+-------------------------------------+
| story |
+------------+-----------+-------------------------------------+
| id | integer | PRIMARY KEY AUTO_INCREMENT NOT NULL |
| authorId | integer | NOT NULL |
| title | varchar | NOT NULL |
| link | varchar | NOT NULL |
+------------+-----------+-------------------------------------+