From cfd1d29302cf46e11cd8a2344352ece1c45dd1bf Mon Sep 17 00:00:00 2001 From: Tobias Zoghaib Date: Wed, 4 Sep 2024 17:06:41 +0200 Subject: [PATCH] Add all database tables with relations --- software/backend/database.ts | 6 +++- software/backend/models/categories.model.ts | 9 +++++- software/backend/models/orderedItem.model.ts | 27 ++++++++++++++++++ software/backend/models/orders.model.ts | 20 +++++++++++++ software/backend/models/products.model.ts | 30 ++++++++++++++++++++ software/backend/models/users.model.ts | 24 ++++++++++++++++ 6 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 software/backend/models/orderedItem.model.ts create mode 100644 software/backend/models/orders.model.ts create mode 100644 software/backend/models/products.model.ts create mode 100644 software/backend/models/users.model.ts diff --git a/software/backend/database.ts b/software/backend/database.ts index 5e0a23e..c5a0551 100644 --- a/software/backend/database.ts +++ b/software/backend/database.ts @@ -2,6 +2,10 @@ import { Sequelize } from "sequelize-typescript" // Models import { Categories } from "./models/categories.model" +import { OrderedItem } from "./models/orderedItem.model" +import { Orders } from "./models/orders.model" +import { Products } from "./models/products.model" +import { Users } from "./models/users.model" const dbName = "database" const dbUser = "root" @@ -14,7 +18,7 @@ export const sequelize = new Sequelize({ username: dbUser, password: dbPassword, storage: "database.sqlite", - models: [ Categories ] + models: [ Categories, OrderedItem, Orders, Products, Users ] }) export function startDatabase() { diff --git a/software/backend/models/categories.model.ts b/software/backend/models/categories.model.ts index 2cdca4b..8cb3c68 100644 --- a/software/backend/models/categories.model.ts +++ b/software/backend/models/categories.model.ts @@ -1,7 +1,14 @@ -import { Table, Column, Model, PrimaryKey, AutoIncrement } from 'sequelize-typescript'; +import { Table, Column, Model, BelongsTo, ForeignKey } from 'sequelize-typescript'; +import { Products } from './products.model'; @Table export class Categories extends Model { @Column name: string + + @ForeignKey(() => Products) + productId: number + + @BelongsTo(() => Products) + product: Products } \ No newline at end of file diff --git a/software/backend/models/orderedItem.model.ts b/software/backend/models/orderedItem.model.ts new file mode 100644 index 0000000..5ce24da --- /dev/null +++ b/software/backend/models/orderedItem.model.ts @@ -0,0 +1,27 @@ +import { Table, Column, Model, BelongsTo, ForeignKey, HasMany } from 'sequelize-typescript'; +import { Orders } from './orders.model'; +import { Products } from './products.model'; + +@Table +export class OrderedItem extends Model { + @Column + @ForeignKey(() => Orders) + orderId: number + + @Column + @ForeignKey(() => Products) + productId: number + + @Column + quantity: number + + @Column + totalPrice: number + + // Relations + @BelongsTo(() => Orders) + order: Orders + + @HasMany(() => Products) + products: Products[] +} \ No newline at end of file diff --git a/software/backend/models/orders.model.ts b/software/backend/models/orders.model.ts new file mode 100644 index 0000000..d9ddbab --- /dev/null +++ b/software/backend/models/orders.model.ts @@ -0,0 +1,20 @@ +import { Table, Column, Model, BelongsTo, ForeignKey, HasMany } from 'sequelize-typescript'; +import { Users } from './users.model'; +import { OrderedItem } from './orderedItem.model'; + +@Table +export class Orders extends Model { + @Column + @ForeignKey(() => Users) + userNameId: number + + @Column + totalPrice: number + + // Relations + @BelongsTo(() => Users) + user: Users + + @HasMany(() => OrderedItem) + orderedItems: OrderedItem +} \ No newline at end of file diff --git a/software/backend/models/products.model.ts b/software/backend/models/products.model.ts new file mode 100644 index 0000000..55f0319 --- /dev/null +++ b/software/backend/models/products.model.ts @@ -0,0 +1,30 @@ +import { Table, Column, Model, ForeignKey, BelongsTo, HasOne } from 'sequelize-typescript'; +import { Categories } from './categories.model'; +import { OrderedItem } from './orderedItem.model'; + +@Table +export class Products extends Model { + @Column + name: string + + @Column + @ForeignKey(() => Categories) + categoryId: number + + @Column + @ForeignKey(() => OrderedItem) + orderedItemId: number + + @Column + price: number + + @Column + discount: number + + // Relations + @BelongsTo(() => OrderedItem) + orderedItem: OrderedItem + + @HasOne(() => Categories) + category: Categories +} \ No newline at end of file diff --git a/software/backend/models/users.model.ts b/software/backend/models/users.model.ts new file mode 100644 index 0000000..3f10261 --- /dev/null +++ b/software/backend/models/users.model.ts @@ -0,0 +1,24 @@ +import { Table, Column, Model, HasMany } from 'sequelize-typescript'; +import { Orders } from './orders.model'; + +@Table +export class Users extends Model { + @Column + username: string + + @Column + password: string + + @Column + address: string + + @Column + firstName: string + + @Column + lastName: string + + // Relations + @HasMany(() => Orders) + orders: Orders[] +} \ No newline at end of file