From fe89ec9a2bb85fcc06f64e539afde2a4531a1723 Mon Sep 17 00:00:00 2001 From: ramadhan sjamsani Date: Thu, 1 May 2025 21:53:22 +0800 Subject: [PATCH] ERD dan skema prisma --- ERD.puml | 61 +++++++++++++++++++++++++++- prisma/schema.prisma | 95 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 154 insertions(+), 2 deletions(-) diff --git a/ERD.puml b/ERD.puml index 76845e5..5276a9c 100644 --- a/ERD.puml +++ b/ERD.puml @@ -1,14 +1,40 @@ @startuml + entity "timbang"{ * id : number <> + * admin_id : number <> petani_id : number <> kendaraan : text waktu : timestamp +} + +entity "berat"{ + * id : number <> + * penimbang_id : number <> + * pemilah_id : number <> + timbang_id : number <> + waktu : timestamp kualitas : enum (1,2,sortiran, kendaraan) berat : number } +entity harga_beli { + * id + tanggal : date + created_by : number <> + harga_kw1 : number + harga_kaw2 : number + harga_kaw3 : number +} + +entity "harga_jual"{ + * id : number <> + * admin_id : number <> + harga : number + tanggal : date +} + entity "petani"{ * id : number <> nama : text @@ -23,8 +49,41 @@ entity "user"{ nama : text } -entity "role" {} +entity "role" { + * id : number <> + name : text +} +entity user_role { + * id : number <> + user_id : number <> + role_id : number <> +} + +entity "authority" { + * authority : text + name : text +} + +entity "role_authority" { + * id : number <> + role_id : number <> + authority : text <> +} + +user::id ||..o{ user_role::user_id +user_role::role_id }o..|| role::id +role::id ||..o{ role_authority::role_id +role_authority::authority }o..|| authority::authority + +user::id ||..|{ timbang::admin_id +timbang::petani_id }o..|| petani::id +timbang::id ||..o{ berat::timbang_id + +berat::penimbang_id }o..|| user::id +berat::pemilah_id }o..|| user::id + +harga_beli::created_by }o..|| user::id @enduml \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index aaeee1b..b408458 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -6,10 +6,103 @@ generator client { provider = "prisma-client-js" - output = "../src/generated/prisma" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } + +model Petani { + id Int @id @default(autoincrement()) + nama String? + telp String? + alamat String? + latitude Float? + longitude Float? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + Timbang Timbang[] +} + +model Timbang { + id Int @id @default(autoincrement()) + petani_id Int + admin_id Int + kendaraan String + waktu DateTime @default(now()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + petani Petani @relation(fields: [petani_id], references: [id]) + admin User @relation(fields: [admin_id], references: [id], name: "admin") + Berat Berat[] +} + +model Berat { + id Int @id @default(autoincrement()) + timbang_id Int + berat Int + kualitas String + waktu DateTime @default(now()) + penimbang_id Int + pemilah_id Int + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + timbang Timbang @relation(fields: [timbang_id], references: [id]) + penimbang User @relation(fields: [penimbang_id], references: [id], name: "penimbang") + pemilah User @relation(fields: [pemilah_id], references: [id], name: "pemilah") +} + +model User { + id Int @id @default(autoincrement()) + username String @unique + password String + nama String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + AdminTimbang Timbang[] @relation(name: "admin") + PenimbangBerat Berat[] @relation(name: "penimbang") + PemilahBerat Berat[] @relation(name: "pemilah") + UserRole UserRole[] +} + +model Role { + id Int @id @default(autoincrement()) + name String @unique + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + UserRole UserRole[] + RoleAuthority RoleAuthority[] +} + +model UserRole { + id Int @id @default(autoincrement()) + user_id Int + role_id Int + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + user User @relation(fields: [user_id], references: [id]) + role Role @relation(fields: [role_id], references: [id]) +} + +model Authority { + authority String @id + name String + RoleAuthority RoleAuthority[] +} + +model RoleAuthority { + id Int @id @default(autoincrement()) + role_id Int + authority String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + role Role @relation(fields: [role_id], references: [id]) + auth Authority @relation(fields: [authority], references: [authority]) +}