Skip to content
schema.dbml 3.33 KiB
Newer Older
Grant's avatar
Grant committed
//// ------------------------------------------------------
//// THIS FILE WAS AUTOMATICALLY GENERATED (DO NOT MODIFY)
//// ------------------------------------------------------

Table Setting {
  key String [pk]
  value String [not null]
}

Grant's avatar
Grant committed
Table User {
  sub String [pk]
Grant's avatar
Grant committed
  display_name String
Grant's avatar
Grant committed
  picture_url String
Grant's avatar
Grant committed
  profile_url String
Grant's avatar
Grant committed
  lastPixelTime DateTime [default: `now()`, not null]
Grant's avatar
Grant committed
  pixelStack Int [not null, default: 0]
Grant's avatar
Grant committed
  undoExpires DateTime
Grant's avatar
Grant committed
  isAdmin Boolean [not null, default: false]
  isModerator Boolean [not null, default: false]
Grant's avatar
Grant committed
  pixels Pixel [not null]
  FactionMember FactionMember [not null]
Grant's avatar
Grant committed
  AuditLog AuditLog [not null]
Grant's avatar
Grant committed
Table Instance {
  id Int [pk, increment]
  hostname String [unique, not null]
  name String
  logo_url String
  banner_url String
Table PaletteColor {
Grant's avatar
Grant committed
  id Int [pk, increment]
  name String [not null]
  hex String [unique, not null]
}

Table Pixel {
  id Int [pk, increment]
  userId String [not null]
  x Int [not null]
  y Int [not null]
  color String [not null]
Grant's avatar
Grant committed
  isTop Boolean [not null, default: false]
  isModAction Boolean [not null, default: false]
Grant's avatar
Grant committed
  createdAt DateTime [default: `now()`, not null]
Grant's avatar
Grant committed
  deletedAt DateTime
Grant's avatar
Grant committed
  user User [not null]
}

Table Faction {
  id String [pk]
  name String [not null]
  image String
  FactionMember FactionMember [not null]
  FactionRole FactionRole [not null]
  FactionSocial FactionSocial [not null]
  FactionSetting FactionSetting [not null]
}

Table FactionMember {
  id Int [pk, increment]
  sub String [not null]
  factionId String [not null]
  user User [not null]
  faction Faction [not null]
}

Table FactionRole {
  id String [pk]
  name String [not null]
  level Int [not null]
  factionId String [not null]
  faction Faction [not null]
}

Table FactionSocial {
  id String [pk]
  factionId String [not null]
  title String
  url String [not null]
  position Int [not null]
  faction Faction [not null]
}

Table FactionSetting {
  id String [pk]
  factionId String [not null]
  key String [not null]
  value String [not null]
  definition FactionSettingDefinition [not null]
  faction Faction [not null]
}

Table FactionSettingDefinition {
  id String [pk]
  name String [not null]
  type String [not null]
  minimumLevel Int [not null]
  FactionSetting FactionSetting [not null]
}

Table Ban {
  id Int [pk, increment]
  userId String [unique]
  instanceId Int [unique]
  privateNote String
  publicNote String
  expiresAt DateTime [not null]
Grant's avatar
Grant committed
  createdAt DateTime [default: `now()`, not null]
  updatedAt DateTime
  user User
  instance Instance
Grant's avatar
Grant committed
  AuditLog AuditLog [not null]
}

Table AuditLog {
  id Int [pk, increment]
  userId String
  action AuditLogAction [not null]
  reason String
  comment String
  banId Int
  createdAt DateTime [default: `now()`, not null]
  updatedAt DateTime
  user User
  ban Ban
}

Enum AuditLogAction {
  BAN_CREATE
  BAN_UPDATE
  BAN_DELETE
Grant's avatar
Grant committed
  CANVAS_SIZE
  CANVAS_FILL
Grant's avatar
Grant committed
  CANVAS_FREEZE
  CANVAS_UNFREEZE
Grant's avatar
Grant committed
  CANVAS_AREA_UNDO
Grant's avatar
Grant committed
Ref: Pixel.userId > User.sub

Ref: FactionMember.sub > User.sub

Ref: FactionMember.factionId > Faction.id

Ref: FactionRole.factionId > Faction.id

Ref: FactionSocial.factionId > Faction.id

Ref: FactionSetting.key > FactionSettingDefinition.id

Ref: FactionSetting.factionId > Faction.id

Ref: Ban.userId - User.sub

Grant's avatar
Grant committed
Ref: Ban.instanceId - Instance.id

Ref: AuditLog.userId > User.sub

Ref: AuditLog.banId > Ban.id