Entidades

Como discutimos anteriormente, o TypeORM se encarrega de mapear o paradigma Orientado a Objetos para o Modelo Relacional de banco de dados. Para tanto, precisamos registrar as entidades do nosso programa.

Para facilitar o procesos, colocaremos todas as entidades numa pasta chamada entity:

import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";

@Entity()
export class Musica {
    @PrimaryGeneratedColumn()
    private _id!: number;

    @Column({ name: "nome" })
    private _nome: string;

    @Column({ name: "duracao" })
    private _duracao: number;

    constructor(nome: string, duracao: number) {
        this._nome = nome;
        this._duracao = duracao;
    }

    get id(): number {
        return this._id;
    }

    get nome(): string {
        return this._nome;
    }

    set nome(nome: string) {
        if (!nome) throw new Error("Nome não pode ser vazio.");
        this._nome = nome;
    }

    get duracao(): number {
        return this._duracao;
    }

    set duracao(duracao: number) {
        if (duracao <= 0) throw new Error("Duração deve ser positiva.");
        this._duracao = duracao;
    }
}

O TypeORM tem maior compatibilidade com atributos públicos. No entanto, para padronizar, vamos manter a abordagem ideal de OO. Para consultar os tipos de outras informações sobre entidades no TypeORM, clique aqui e consulte a documentação.