Schema - AndrewYW/harmony GitHub Wiki

Database Schema

users

column name data type details
id integer not null, primary key
username string not null, indexed
discriminator string not null,
discord_id integer not null, indexed, unique
image_url string optional
email string not null, indexed, unique
password_digest string not null
session_token string not null, indexed, unique
created_at datetime not null
updated_at datetime not null
  • index on session_token, unique: true
  • index on discord_id, unique: true

messages

column name data type details
id integer not null, primary key
body string not null
author_id integer not null, indexed, foreign key
channel_id string not null, indexed, foreign key
discord_id integer not null, indexed, unique
created_at datetime not null
updated_at datetime not null
  • author_id references users
  • channel_id references channels

servers

column name data type details
id integer not null, primary key
admin_id integer not null, indexed, foreign key
discord_id integer not null, indexed, unique
name string not null, indexed,
image_url string optional
created_at datetime not null
updated_at datetime not null
  • admin_id references users

channels

column name data type details
id integer not null, primary key
server_id integer not null, indexed, foreign key
discord_id integer not null, indexed, unique
name string not null, indexed,
voice boolean not null,
created_at datetime not null
updated_at datetime not null
  • server_id references servers

serverMembers

Servers/Members join table

column name data type details
id integer not null, primary key
server_id integer not null, indexed, foreign key
user_id integer not null, indexed, foreign key
is_admin? boolean not null, indexed
created_at datetime not null
updated_at datetime not null
  • server_id references servers
  • user_id references users
  • index on [user_id, server_id] unique: true

BONUS

roles

Server member roles join table

column name data type details
id integer not null, primary key
server_id integer not null, indexed, foreign key
user_id integer not null, indexed, foreign key
role_name string not null
created_at datetime not null
updated_at datetime not null
  • server_id references Servers
  • user_id references Users