Files
HKSingleParty/99_references/dbml_examples/learn.dbml
2025-05-28 09:55:51 +08:00

136 lines
3.3 KiB
Plaintext

Project Code_Mentoring {
database_type: 'PostgreSQL'
Note: 'learn.codementoring.co'
}
// ---------------------------------------------- User
Table User as U {
id uuid [pk, unique, not null]
firstName varchar [not null]
lastName varchar [not null]
email varchar [not null, unique]
createdAt timestamp [not null]
updatedAt timestamp
}
Table UserPreferences {
id uuid [pk, unique, not null]
userId uuid [ref: - U.id, not null]
practiceGoal integer [note: '1-4']
why varchar
codingAbility integer [note: '1-10']
}
// ---------------------------------------------- Path
Table Path {
id uuid [pk, unique, not null]
name varchar [not null, unique]
icon varchar [not null]
description varchar [not null]
createdAt timestamp [not null]
updatedAt timestamp
characterId uuid [ref: - Character.id, not null]
}
Table UserPath {
id uuid [pk, unique, not null]
userId uuid [ref: > U.id, not null]
pathId uuid [ref: > Path.id, not null]
completed boolean [not null]
joined timestamp [not null]
}
// ---------------------------------------------- Concept
Table Concept {
id uuid [pk, unique, not null]
name varchar [not null, unique]
description text [not null]
icon varchar [not null]
taughtIn uuid [ref: - M.id, not null]
}
Table UserConcepts {
userId uuid [ref: > U.id, not null]
conceptId uuid [ref: > Concept.id, not null]
learned timestamp [not null]
}
// ---------------------------------------------- Module
enum module_type {
lesson
assignment
}
Table Module as M{
id uuid [pk, unique, not null]
name varchar [not null, unique]
icon varchar [not null]
type module_type [not null, note: 'assignment OR lesson']
previous uuid [ref: > Module.id]
pathId uuid [ref: > Path.id, not null]
}
Table UserModule {
id uuid [pk, unique, not null]
userId uuid [ref: > U.id, not null]
moduleId uuid [ref: > M.id, not null]
completedAt timestamp
}
// ---------------------------------------------- Assignment
Table Assignment {
id uuid [pk, unique, not null]
moduleId uuid [ref: > M.id, not null]
description varchar [not null]
}
Table AssignmentFile as AF {
id uuid [pk, unique, not null]
author uuid [ref: > U.id, not null]
assignmentId uuid [ref: > Assignment.id, not null]
name varchar [not null]
type varchar [not null, note: 'Mimetype']
content text [not null]
}
// ---------------------------------------------- Lesson
Table Lesson as L {
id uuid [pk, unique, not null]
moduleId uuid [ref: > M.id, not null]
}
Table StorySection as SS {
id uuid [pk, unique, not null]
lessonId uuid [ref: > L.id, not null]
order int [not null]
content text [not null, note: "Markdown content"]
teaches uuid [ref: - Concept.id]
}
// ---------------------------------------------- Character
table Character {
id uuid [pk, unique, not null]
name varchar [not null, unique]
displayName varchar [not null, unique]
}
// ---------------------------------------------- Friends
table Friends {
user1Id uuid [ref: > U.id, not null]
user2Id uuid [ref: > U.id, not null]
since timestamp [not null]
}
table FriendRequests {
from uuid [ref: > U.id, not null]
to uuid [ref: > U.id, not null]
accepted boolean [note: '
null = Pending
true = create Friend join
false = Rejected
']
requested timestamp [not null]
}