Repository navigation
Database Schema
James Hawkins edited this page Feb 27, 2019
·
5 revisions
| column name | data type | details | foreign key |
|---|---|---|---|
id |
integer | not null, primary key | |
full_name |
string | not null, indexed | |
alias |
string | ||
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
:full_name - index on
:email, unique: true - index on
:session_token, unique: true
| column name | data type | details | foreign key |
|---|---|---|---|
id |
integer | not null, primary key | |
body |
text | not null | |
chatroom_id |
integer | not null, indexed | true |
author_id |
integer | not null, indexed | true |
parent_id |
integer | indexed | true |
created_at |
datetime | not null | |
updated_at |
datetime | not null |
- index on
:chatroom_id - index on
:author_id - index on
:parent_id -
:author_idreferencesusersid -
:chatroom_idreferenceschatroomsid -
:parent_idreferencesmessagesid
| column name | data type | details | foreign key |
|---|---|---|---|
id |
integer | not null, primary key | |
title |
string | indexed | |
topic |
string | not null | |
chatroom_type |
string | not null | |
admin_id |
integer | not null | true |
created_at |
datetime | not null | |
updated_at |
datetime | not null |
-
:admin_idreferencesusersid -
:type(Model level validation:inclusion: { in: [channel, direct_message] }
| column name | data type | details | foreign key |
|---|---|---|---|
id |
integer | not null, primary key | |
chatroom_id |
integer | not null | true |
user_id |
integer | not null | true |
last_read_message |
integer | not null, indexed | true |
created_at |
datetime | not null | |
updated_at |
datetime | not null |
- index on
[:chatroom_id, :user_id], unique: true - index on
[:chatroom_id, :user_id, last_read_message] -
:user_idreferencesusersid -
:chatroom_idreferenceschatroomsid -
:last_read_messagereferencesmessagesid
| column name | data type | details | foreign key |
|---|---|---|---|
id |
integer | not null, primary key | |
starrable |
references | polymorphic, indexed | true |
user_id |
integer | not null | true |
created_at |
datetime | not null | |
updated_at |
datetime | not null |
- index on
[:user_id, :starrable_id, :starrable_type], unique: true -
:user_idreferencesusersid -
:starrablereferences eithermessagesidorchatroomsid
| column name | data type | details | foreign key |
|---|---|---|---|
id |
integer | not null, primary key | |
chatroom_id |
integer | not null | true |
message_id |
integer | not null | true |
created_at |
datetime | not null | |
updated_at |
datetime | not null |
- index on
[:chatroom_id, :message_id], unique: true -
:message_idreferencesmessagesid -
:chatroom_idreferenceschatroomsid
| column name | data type | details | foreign key |
|---|---|---|---|
id |
integer | not null, primary key | |
emoji_id |
text | not null | true |
message_id |
integer | not null | true |
user_id |
integer | not null | true |
created_at |
datetime | not null | |
updated_at |
datetime | not null |
- index on
[:message_id, :user_id, emoji_id], unique: true -
:user_idreferencesusersid -
:message_idreferencesmessagesid -
:emoji_idreferencesemojisid
| column name | data type | details | foreign key |
|---|---|---|---|
id |
integer | not null, primary key | |
title |
text | not null | |
emoji |
text | not null | |
created_at |
datetime | not null | |
updated_at |
datetime | not null |