Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problems with big schema #58

Closed
John0x opened this issue May 6, 2022 · 1 comment
Closed

Problems with big schema #58

John0x opened this issue May 6, 2022 · 1 comment

Comments

@John0x
Copy link
Contributor

John0x commented May 6, 2022

Hey, I have a schema that was generated by db introspection, which seems to cause several issues.
I've added @@ignore to all of them for now, so that I can continue with my work.

The schema:

model directus_activity {
  id                 Int                  @id @default(autoincrement())
  action             String               @db.VarChar(45)
  user               String?              @db.Uuid
  timestamp          DateTime             @default(now()) @db.Timestamptz(6)
  ip                 String               @db.VarChar(50)
  user_agent         String?              @db.VarChar(255)
  collection         String               @db.VarChar(64)
  item               String               @db.VarChar(255)
  comment            String?
  directus_revisions directus_revisions[]

  @@ignore
}

model directus_collections {
  collection                 String                 @id @db.VarChar(64)
  icon                       String?                @db.VarChar(30)
  note                       String?
  display_template           String?                @db.VarChar(255)
  hidden                     Boolean                @default(false)
  singleton                  Boolean                @default(false)
  translations               Json?                  @db.Json
  archive_field              String?                @db.VarChar(64)
  archive_app_filter         Boolean                @default(true)
  archive_value              String?                @db.VarChar(255)
  unarchive_value            String?                @db.VarChar(255)
  sort_field                 String?                @db.VarChar(64)
  accountability             String?                @default("all") @db.VarChar(255)
  color                      String?                @db.VarChar(255)
  item_duplication_fields    Json?                  @db.Json
  sort                       Int?
  group                      String?                @db.VarChar(64)
  collapse                   String                 @default("open") @db.VarChar(255)
  directus_collections       directus_collections?  @relation("directus_collectionsTodirectus_collections_group", fields: [group], references: [collection], onDelete: NoAction, onUpdate: NoAction, map: "directus_collections_group_foreign")
  other_directus_collections directus_collections[] @relation("directus_collectionsTodirectus_collections_group")
  directus_shares            directus_shares[]

  @@ignore
}

model directus_dashboards {
  id              String            @id @db.Uuid
  name            String            @db.VarChar(255)
  icon            String            @default("dashboard") @db.VarChar(30)
  note            String?
  date_created    DateTime?         @default(now()) @db.Timestamptz(6)
  user_created    String?           @db.Uuid
  directus_users  directus_users?   @relation(fields: [user_created], references: [id], onUpdate: NoAction, map: "directus_dashboards_user_created_foreign")
  directus_panels directus_panels[]

  @@ignore
}

model directus_fields {
  id                 Int      @id @default(autoincrement())
  collection         String   @db.VarChar(64)
  field              String   @db.VarChar(64)
  special            String?  @db.VarChar(64)
  interface          String?  @db.VarChar(64)
  options            Json?    @db.Json
  display            String?  @db.VarChar(64)
  display_options    Json?    @db.Json
  readonly           Boolean  @default(false)
  hidden             Boolean  @default(false)
  sort               Int?
  width              String?  @default("full") @db.VarChar(30)
  translations       Json?    @db.Json
  note               String?
  conditions         Json?    @db.Json
  required           Boolean? @default(false)
  group              String?  @db.VarChar(64)
  validation         Json?    @db.Json
  validation_message String?

  @@ignore
}

model directus_files {
  id                                                                    String              @id @db.Uuid
  storage                                                               String              @db.VarChar(255)
  filename_disk                                                         String?             @db.VarChar(255)
  filename_download                                                     String              @db.VarChar(255)
  title                                                                 String?             @db.VarChar(255)
  type                                                                  String?             @db.VarChar(255)
  folder                                                                String?             @db.Uuid
  uploaded_by                                                           String?             @db.Uuid
  uploaded_on                                                           DateTime            @default(now()) @db.Timestamptz(6)
  modified_by                                                           String?             @db.Uuid
  modified_on                                                           DateTime            @default(now()) @db.Timestamptz(6)
  charset                                                               String?             @db.VarChar(50)
  filesize                                                              BigInt?
  width                                                                 Int?
  height                                                                Int?
  duration                                                              Int?
  embed                                                                 String?             @db.VarChar(200)
  description                                                           String?
  location                                                              String?
  tags                                                                  String?
  metadata                                                              Json?               @db.Json
  directus_folders                                                      directus_folders?   @relation(fields: [folder], references: [id], onUpdate: NoAction, map: "directus_files_folder_foreign")
  directus_users_directus_files_modified_byTodirectus_users             directus_users?     @relation("directus_files_modified_byTodirectus_users", fields: [modified_by], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "directus_files_modified_by_foreign")
  directus_users_directus_files_uploaded_byTodirectus_users             directus_users?     @relation("directus_files_uploaded_byTodirectus_users", fields: [uploaded_by], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "directus_files_uploaded_by_foreign")
  directus_settings_directus_filesTodirectus_settings_project_logo      directus_settings[] @relation("directus_filesTodirectus_settings_project_logo")
  directus_settings_directus_filesTodirectus_settings_public_background directus_settings[] @relation("directus_filesTodirectus_settings_public_background")
  directus_settings_directus_filesTodirectus_settings_public_foreground directus_settings[] @relation("directus_filesTodirectus_settings_public_foreground")

  @@ignore
}

model directus_folders {
  id                     String              @id @db.Uuid
  name                   String              @db.VarChar(255)
  parent                 String?             @db.Uuid
  directus_folders       directus_folders?   @relation("directus_foldersTodirectus_folders_parent", fields: [parent], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "directus_folders_parent_foreign")
  directus_files         directus_files[]
  other_directus_folders directus_folders[]  @relation("directus_foldersTodirectus_folders_parent")
  directus_settings      directus_settings[]

  @@ignore
}

model directus_migrations {
  version   String    @id @db.VarChar(255)
  name      String    @db.VarChar(255)
  timestamp DateTime? @default(now()) @db.Timestamptz(6)

  @@ignore
}

model directus_notifications {
  id                                                              Int            @id @default(autoincrement())
  timestamp                                                       DateTime       @db.Timestamptz(6)
  status                                                          String?        @default("inbox") @db.VarChar(255)
  recipient                                                       String         @db.Uuid
  sender                                                          String         @db.Uuid
  subject                                                         String         @db.VarChar(255)
  message                                                         String?
  collection                                                      String?        @db.VarChar(64)
  item                                                            String?        @db.VarChar(255)
  directus_users_directus_notifications_recipientTodirectus_users directus_users @relation("directus_notifications_recipientTodirectus_users", fields: [recipient], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "directus_notifications_recipient_foreign")
  directus_users_directus_notifications_senderTodirectus_users    directus_users @relation("directus_notifications_senderTodirectus_users", fields: [sender], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "directus_notifications_sender_foreign")

  @@ignore
}

model directus_panels {
  id                  String              @id @db.Uuid
  dashboard           String              @db.Uuid
  name                String?             @db.VarChar(255)
  icon                String?             @db.VarChar(30)
  color               String?             @db.VarChar(10)
  show_header         Boolean             @default(false)
  note                String?
  type                String              @db.VarChar(255)
  position_x          Int
  position_y          Int
  width               Int
  height              Int
  options             Json?               @db.Json
  date_created        DateTime?           @default(now()) @db.Timestamptz(6)
  user_created        String?             @db.Uuid
  directus_dashboards directus_dashboards @relation(fields: [dashboard], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "directus_panels_dashboard_foreign")
  directus_users      directus_users?     @relation(fields: [user_created], references: [id], onUpdate: NoAction, map: "directus_panels_user_created_foreign")

  @@ignore
}

model directus_permissions {
  id             Int             @id @default(autoincrement())
  role           String?         @db.Uuid
  collection     String          @db.VarChar(64)
  action         String          @db.VarChar(10)
  permissions    Json?           @db.Json
  validation     Json?           @db.Json
  presets        Json?           @db.Json
  fields         String?
  directus_roles directus_roles? @relation(fields: [role], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "directus_permissions_role_foreign")

  @@ignore
}

model directus_presets {
  id               Int             @id @default(autoincrement())
  bookmark         String?         @db.VarChar(255)
  user             String?         @db.Uuid
  role             String?         @db.Uuid
  collection       String?         @db.VarChar(64)
  search           String?         @db.VarChar(100)
  layout           String?         @default("tabular") @db.VarChar(100)
  layout_query     Json?           @db.Json
  layout_options   Json?           @db.Json
  refresh_interval Int?
  filter           Json?           @db.Json
  icon             String          @default("bookmark_outline") @db.VarChar(30)
  color            String?         @db.VarChar(255)
  directus_roles   directus_roles? @relation(fields: [role], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "directus_presets_role_foreign")
  directus_users   directus_users? @relation(fields: [user], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "directus_presets_user_foreign")

  @@ignore
}

model directus_relations {
  id                      Int     @id @default(autoincrement())
  many_collection         String  @db.VarChar(64)
  many_field              String  @db.VarChar(64)
  one_collection          String? @db.VarChar(64)
  one_field               String? @db.VarChar(64)
  one_collection_field    String? @db.VarChar(64)
  one_allowed_collections String?
  junction_field          String? @db.VarChar(64)
  sort_field              String? @db.VarChar(64)
  one_deselect_action     String  @default("nullify") @db.VarChar(255)

  @@ignore
}

model directus_revisions {
  id                       Int                  @id @default(autoincrement())
  activity                 Int
  collection               String               @db.VarChar(64)
  item                     String               @db.VarChar(255)
  data                     Json?                @db.Json
  delta                    Json?                @db.Json
  parent                   Int?
  directus_activity        directus_activity    @relation(fields: [activity], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "directus_revisions_activity_foreign")
  directus_revisions       directus_revisions?  @relation("directus_revisionsTodirectus_revisions_parent", fields: [parent], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "directus_revisions_parent_foreign")
  other_directus_revisions directus_revisions[] @relation("directus_revisionsTodirectus_revisions_parent")

  @@ignore
}

model directus_roles {
  id                   String                 @id @db.Uuid
  name                 String                 @db.VarChar(100)
  icon                 String                 @default("supervised_user_circle") @db.VarChar(30)
  description          String?
  ip_access            String?
  enforce_tfa          Boolean                @default(false)
  admin_access         Boolean                @default(false)
  app_access           Boolean                @default(true)
  directus_permissions directus_permissions[]
  directus_presets     directus_presets[]
  directus_shares      directus_shares[]
  directus_users       directus_users[]

  @@ignore
}

model directus_sessions {
  token           String           @id @db.VarChar(64)
  user            String?          @db.Uuid
  expires         DateTime         @db.Timestamptz(6)
  ip              String?          @db.VarChar(255)
  user_agent      String?          @db.VarChar(255)
  share           String?          @db.Uuid
  directus_shares directus_shares? @relation(fields: [share], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "directus_sessions_share_foreign")
  directus_users  directus_users?  @relation(fields: [user], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "directus_sessions_user_foreign")

  @@ignore
}

model directus_settings {
  id                                                                 Int               @id @default(autoincrement())
  project_name                                                       String            @default("Directus") @db.VarChar(100)
  project_url                                                        String?           @db.VarChar(255)
  project_color                                                      String?           @db.VarChar(50)
  project_logo                                                       String?           @db.Uuid
  public_foreground                                                  String?           @db.Uuid
  public_background                                                  String?           @db.Uuid
  public_note                                                        String?
  auth_login_attempts                                                Int?              @default(25)
  auth_password_policy                                               String?           @db.VarChar(100)
  storage_asset_transform                                            String?           @default("all") @db.VarChar(7)
  storage_asset_presets                                              Json?             @db.Json
  custom_css                                                         String?
  storage_default_folder                                             String?           @db.Uuid
  basemaps                                                           Json?             @db.Json
  mapbox_key                                                         String?           @db.VarChar(255)
  module_bar                                                         Json?             @db.Json
  project_descriptor                                                 String?           @db.VarChar(100)
  translation_strings                                                Json?             @db.Json
  default_language                                                   String            @default("en-US") @db.VarChar(255)
  directus_files_directus_filesTodirectus_settings_project_logo      directus_files?   @relation("directus_filesTodirectus_settings_project_logo", fields: [project_logo], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "directus_settings_project_logo_foreign")
  directus_files_directus_filesTodirectus_settings_public_background directus_files?   @relation("directus_filesTodirectus_settings_public_background", fields: [public_background], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "directus_settings_public_background_foreign")
  directus_files_directus_filesTodirectus_settings_public_foreground directus_files?   @relation("directus_filesTodirectus_settings_public_foreground", fields: [public_foreground], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "directus_settings_public_foreground_foreign")
  directus_folders                                                   directus_folders? @relation(fields: [storage_default_folder], references: [id], onUpdate: NoAction, map: "directus_settings_storage_default_folder_foreign")

  @@ignore
}

model directus_shares {
  id                   String                @id @db.Uuid
  name                 String?               @db.VarChar(255)
  collection           String?               @db.VarChar(64)
  item                 String?               @db.VarChar(255)
  role                 String?               @db.Uuid
  password             String?               @db.VarChar(255)
  user_created         String?               @db.Uuid
  date_created         DateTime?             @default(now()) @db.Timestamptz(6)
  date_start           DateTime?             @db.Timestamptz(6)
  date_end             DateTime?             @db.Timestamptz(6)
  times_used           Int?                  @default(0)
  max_uses             Int?
  directus_collections directus_collections? @relation(fields: [collection], references: [collection], onDelete: Cascade, onUpdate: NoAction, map: "directus_shares_collection_foreign")
  directus_roles       directus_roles?       @relation(fields: [role], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "directus_shares_role_foreign")
  directus_users       directus_users?       @relation(fields: [user_created], references: [id], onUpdate: NoAction, map: "directus_shares_user_created_foreign")
  directus_sessions    directus_sessions[]

  @@ignore
}

model directus_users {
  id                                                                      String                   @id @db.Uuid
  first_name                                                              String?                  @db.VarChar(50)
  last_name                                                               String?                  @db.VarChar(50)
  email                                                                   String?                  @unique(map: "directus_users_email_unique") @db.VarChar(128)
  password                                                                String?                  @db.VarChar(255)
  location                                                                String?                  @db.VarChar(255)
  title                                                                   String?                  @db.VarChar(50)
  description                                                             String?
  tags                                                                    Json?                    @db.Json
  avatar                                                                  String?                  @db.Uuid
  language                                                                String?                  @db.VarChar(255)
  theme                                                                   String?                  @default("auto") @db.VarChar(20)
  tfa_secret                                                              String?                  @db.VarChar(255)
  status                                                                  String                   @default("active") @db.VarChar(16)
  role                                                                    String?                  @db.Uuid
  token                                                                   String?                  @unique(map: "directus_users_token_unique") @db.VarChar(255)
  last_access                                                             DateTime?                @db.Timestamptz(6)
  last_page                                                               String?                  @db.VarChar(255)
  provider                                                                String                   @default("default") @db.VarChar(128)
  external_identifier                                                     String?                  @unique(map: "directus_users_external_identifier_unique") @db.VarChar(255)
  auth_data                                                               Json?                    @db.Json
  email_notifications                                                     Boolean?                 @default(true)
  directus_roles                                                          directus_roles?          @relation(fields: [role], references: [id], onUpdate: NoAction, map: "directus_users_role_foreign")
  directus_dashboards                                                     directus_dashboards[]
  directus_files_directus_files_modified_byTodirectus_users               directus_files[]         @relation("directus_files_modified_byTodirectus_users")
  directus_files_directus_files_uploaded_byTodirectus_users               directus_files[]         @relation("directus_files_uploaded_byTodirectus_users")
  directus_notifications_directus_notifications_recipientTodirectus_users directus_notifications[] @relation("directus_notifications_recipientTodirectus_users")
  directus_notifications_directus_notifications_senderTodirectus_users    directus_notifications[] @relation("directus_notifications_senderTodirectus_users")
  directus_panels                                                         directus_panels[]
  directus_presets                                                        directus_presets[]
  directus_sessions                                                       directus_sessions[]
  directus_shares                                                         directus_shares[]

  @@ignore
}

model directus_webhooks {
  id          Int     @id @default(autoincrement())
  name        String  @db.VarChar(255)
  method      String  @default("POST") @db.VarChar(10)
  url         String  @db.VarChar(255)
  status      String  @default("active") @db.VarChar(10)
  data        Boolean @default(true)
  actions     String  @db.VarChar(100)
  collections String  @db.VarChar(255)
  headers     Json?   @db.Json

  @@ignore
}
@Brendonovich
Copy link
Owner

Your schema contains field names that are reserved keywords in Rust, as documented here. directus_panels and directus_files both have fields named type. You could change the name of the fields to typ or something and then add @map("type") to each field to map them to the actual database fields.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants