diff --git a/src/models/booking.model.ts b/src/models/booking.model.ts new file mode 100644 index 0000000..6c6df2c --- /dev/null +++ b/src/models/booking.model.ts @@ -0,0 +1,58 @@ +import { Model, Table, Column, DataType } from "sequelize-typescript"; + +import Hotel from "./hotel.model.ts"; +import Client from "./client.model.ts"; + +@Table({ + tableName: "HotelBooking", +}) +export default class Booking extends Model { + @Unique + @Column({ + type: DataType.INTEGER, + primaryKey: true, + autoIncrement: true, + field: "id" + }) + id: number; + + @ForeignKey(() => Hotel) + @Column({ + type: DataType.INTEGER, + field: "HotelId" + }) + hotelId: number; + + @BelongsTo(() => Hotel) + hotel: Hotel; + + @Column({ + type: DataType.STRING(255), + field: "Name" + }) + name?: string; + + @Column({ + type: DataType.STRING(255), + field: "Address" + }) + address?: string; + + @Column({ + type: DataType.DATE, + field: "CreatedDate" + defaultValue: DataType.NOW + }) + createdDate: Date; + + @ForeignKey(() => Client) + @Column({ + type: DataType.INTEGER, + field: "clientId" + }) + clientId: number; + + @BelongsTo(() => Client) + client: Client; +} + diff --git a/src/models/client.model.ts b/src/models/client.model.ts new file mode 100644 index 0000000..5bc52f4 --- /dev/null +++ b/src/models/client.model.ts @@ -0,0 +1,47 @@ +import { Model, Table, Column, DataType } from "sequelize-typescript"; + +import Hotel from "./hotel.model.ts"; +import Booking from "./booking.model.ts"; + +@Table({ + tableName: "Client", +}) +export default class Client extends Model { + @Unique + @Column({ + type: DataType.INTEGER, + primaryKey: true, + autoIncrement: true, + field: "id" + }) + id: number; + + @Column({ + type: DataType.STRING(255), + field: "Name" + }) + name: string; + + @Column({ + type: DataType.STRING(255), + field: "Address" + }) + address: string; + + @Column({ + type: DataType.STRING(255), + field: "Phone" + }) + phone: string; + + @Column({ + type: DataType.DATE, + field: "CreatedDate" + defaultValue: DataType.NOW + }) + createdDate: Date; + + @HasMany(() => Booking) + bookings: Booking[]; +} + diff --git a/src/models/hotel.model.ts b/src/models/hotel.model.ts new file mode 100644 index 0000000..c61533c --- /dev/null +++ b/src/models/hotel.model.ts @@ -0,0 +1,41 @@ +import { Model, Table, Column, DataType } from "sequelize-typescript"; + +import Client from "./client.model.ts"; +import Booking from "./booking.model.ts"; + +@Table({ + tableName: "Hotel", +}) +export default class Hotel extends Model { + @Unique + @Column({ + type: DataType.INTEGER, + primaryKey: true, + autoIncrement: true, + field: "id" + }) + id: number; + + @Column({ + type: DataType.STRING(255), + field: "Name" + }) + name: string; + + @Column({ + type: DataType.STRING(255), + field: "Address" + }) + address: string; + + @Column({ + type: DataType.DATE, + field: "CreatedDate" + defaultValue: DataType.NOW + }) + createdDate: Date; + + @HasMany(() => Booking) + bookings: Booking[]; +} +