From 28e6a556f8e1320b9f9067f022d2ca40c4fe8998 Mon Sep 17 00:00:00 2001 From: IZZY Date: Mon, 12 May 2025 13:10:51 +0100 Subject: [PATCH] Fixed prisma schema file --- prisma/schema.prisma | 85 +++++++++++++++++++++++++++++++++++++ src/databases/schema.prisma | 85 ------------------------------------- 2 files changed, 85 insertions(+), 85 deletions(-) create mode 100644 prisma/schema.prisma delete mode 100644 src/databases/schema.prisma diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 0000000..3e0e8c6 --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,85 @@ +// Datasource configuration +datasource db { + provider = "sqlserver" + url = env("DATABASE_URL") +} + +// User model +model User { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + name String + email String @unique + passwordHash String + role String @default("GUEST") @db.VarChar(10) // ADMIN, SCIENTIST, GUEST + scientist Scientist? @relation + purchasedArtefacts Artefact[] @relation("UserPurchasedArtefacts") +} + +// Scientist model +model Scientist { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + name String + level String @db.VarChar(10) // JUNIOR, SENIOR + user User @relation(fields: [userId], references: [id]) + userId Int @unique + superior Scientist? @relation("SuperiorRelation", fields: [superiorId], references: [id], onDelete: NoAction, onUpdate: NoAction) + superiorId Int? + subordinates Scientist[] @relation("SuperiorRelation") + earthquakes Earthquake[] @relation("ScientistEarthquakeCreator") + observatories Observatory[] @relation("ScientistObservatoryCreator") + artefacts Artefact[] @relation("ScientistArtefactCreator") +} + +// Earthquake model +model Earthquake { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + date DateTime + location String + latitude String + longitude String + magnitude Float + depth Float + creatorId Int? + creator Scientist? @relation("ScientistEarthquakeCreator", fields: [creatorId], references: [id], onDelete: NoAction, onUpdate: NoAction) + artefacts Artefact[] + observatories Observatory[] @relation("EarthquakeObservatory") +} + +// Observatory model +model Observatory { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + name String + location String + longitude String + latitude String + dateEstablished Int? + functional Boolean + seismicSensorOnline Boolean @default(true) + creatorId Int? + creator Scientist? @relation("ScientistObservatoryCreator", fields: [creatorId], references: [id], onDelete: NoAction, onUpdate: NoAction) + earthquakes Earthquake[] @relation("EarthquakeObservatory") +} + +// Artefact model +model Artefact { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + type String @db.VarChar(50) // Lava, Tephra, Ash, Soil + warehouseArea String // Examples: "ZoneA-Shelf1", "ZoneB-Rack2", "ZoneC-Bin3" + earthquakeId Int + earthquake Earthquake @relation(fields: [earthquakeId], references: [id]) + creatorId Int? + creator Scientist? @relation("ScientistArtefactCreator", fields: [creatorId], references: [id], onDelete: NoAction, onUpdate: NoAction) + required Boolean @default(true) + shopPrice Float? // In Euros + purchasedById Int? + purchasedBy User? @relation("UserPurchasedArtefacts", fields: [purchasedById], references: [id], onDelete: NoAction, onUpdate: NoAction) + pickedUp Boolean @default(false) +} diff --git a/src/databases/schema.prisma b/src/databases/schema.prisma deleted file mode 100644 index 39a78ca..0000000 --- a/src/databases/schema.prisma +++ /dev/null @@ -1,85 +0,0 @@ -// Datasource configuration -datasource db { - provider = "sqlserver" - url = env("DATABASE_URL") -} - -// User model -model User { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - name String - email String @unique - passwordHash String - role String @default("GUEST") @db.VarChar(10) // ADMIN, SCIENTIST, GUEST - scientist Scientist? @relation - purchasedArtifacts Artifact[] @relation("UserPurchasedArtifacts") -} - -// Scientist model -model Scientist { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - name String - level String @db.VarChar(10) // JUNIOR, SENIOR - user User @relation(fields: [userId], references: [id]) - userId Int @unique - superior Scientist? @relation("SuperiorRelation", fields: [superiorId], references: [id], onDelete: NoAction, onUpdate: NoAction) - superiorId Int? - subordinates Scientist[] @relation("SuperiorRelation") - earthquakes Earthquake[] @relation("ScientistEarthquakeCreator") - observatories Observatory[] @relation("ScientistObservatoryCreator") - artifacts Artifact[] @relation("ScientistArtifactCreator") -} - -// Earthquake model -model Earthquake { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - date DateTime - locaiton String - latitude String - longitude String - magnitude Float - depth Float - creatorId Int? - creator Scientist? @relation("ScientistEarthquakeCreator", fields: [creatorId], references: [id], onDelete: NoAction, onUpdate: NoAction) - artifacts Artifact[] - observatories Observatory[] @relation("EarthquakeObservatory") -} - -// Observatory model -model Observatory { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - name String - location String - longitude String - latitude String - dateEstablished Int? - functional Boolean - seismicSensorOnline Boolean @default(true) - creatorId Int? - creator Scientist? @relation("ScientistObservatoryCreator", fields: [creatorId], references: [id], onDelete: NoAction, onUpdate: NoAction) - earthquakes Earthquake[] @relation("EarthquakeObservatory") -} - -// Artifact model -model Artifact { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - type String @db.VarChar(50) // Lava, Tephra, Ash, Soil - warehouseArea String // Examples: "ZoneA-Shelf1", "ZoneB-Rack2", "ZoneC-Bin3" - earthquakeId Int - earthquake Earthquake @relation(fields: [earthquakeId], references: [id]) - creatorId Int? - creator Scientist? @relation("ScientistArtifactCreator", fields: [creatorId], references: [id], onDelete: NoAction, onUpdate: NoAction) - required Boolean @default(true) - shopPrice Float? // In Euros - purchasedById Int? - purchasedBy User? @relation("UserPurchasedArtifacts", fields: [purchasedById], references: [id], onDelete: NoAction, onUpdate: NoAction) - pickedUp Boolean @default(false) -} \ No newline at end of file