forked from Ivasoft/mattermost-mobile
* started with the diagrams
* removed redundant tables
next step:
1. reconstruct id ( local id vs server id )
2. annotate fields with examples
3. recreate relationship
* work in progress
* work in progress
* fix association
* update postsInChannel
* removed SlashCommands from the Server database schema
* added missing associations in the models and updated docs/database
* exported server database
* update test
* code corrections following review
* update relationship
* update docs
* removed cyclic relationship
* Revert "removed cyclic relationship"
This reverts commit 4d784efb81.
* removed isOptional from Draft
* linked myChannelSettings to myChannel instead of Channel
* update diagrams
* store null instead of empty string
* update thread association
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
266 lines
4.7 KiB
Markdown
266 lines
4.7 KiB
Markdown
# Server Database - Schema Version 1
|
|
# Please bump the version by 1, any time the schema changes.
|
|
# Also, include the migration plan under app/database/migration/server,
|
|
# update all models, relationships and types.
|
|
# Lastly, export all PNGs, SVGs, etc under the source project (./docs/database)
|
|
# If you have any question/queries that you would like to clarify, please reach out to the Mobile Platform Team.
|
|
|
|
|
|
Category
|
|
-
|
|
id PK string # server-generated
|
|
collapsed bool
|
|
display_name string
|
|
muted bool
|
|
sort_order number
|
|
sorting string # alpha, recent, manual
|
|
team_id string INDEX FK >- Team.id
|
|
type string # 'channels' | 'direct_messages' | 'favorites' | 'custom'
|
|
|
|
|
|
CategoryChannel
|
|
-
|
|
id PK string # composition ID Team.id_Channel.id
|
|
category_id string INDEX FK >- Category.id
|
|
channel_id string INDEX
|
|
sort_order number
|
|
|
|
|
|
Channel
|
|
-
|
|
id PK string FK - CategoryChannel.channel_id # server-generated
|
|
create_at string
|
|
creator_id string INDEX FK >- User.id
|
|
delete_at number
|
|
display_name string
|
|
is_group_constrained bool
|
|
name string INDEX
|
|
shared bool
|
|
team_id string INDEX FK >- Team.id
|
|
type string
|
|
update_at number
|
|
|
|
|
|
ChannelInfo
|
|
-
|
|
id PK string FK - Channel.id# same value as Channel.id
|
|
guest_count number
|
|
header string
|
|
member_count number
|
|
pinned_post_count number
|
|
purpose string
|
|
|
|
ChannelMembership
|
|
-
|
|
id PK string # composition ID Channel.id-User.id
|
|
channel_id string INDEX FK >- Channel.id
|
|
user_id string INDEX FK >- User.id
|
|
|
|
CustomEmoji
|
|
-
|
|
id PK string # auto-generated
|
|
name string
|
|
|
|
|
|
Draft
|
|
-
|
|
id PK string # auto-generated
|
|
channel_id string INDEX FK >- Channel.id
|
|
files string #stringify (array)
|
|
message string
|
|
root_id string INDEX NULL FK >- Post.id
|
|
|
|
|
|
File
|
|
-
|
|
id PK string # server-generated
|
|
extension string
|
|
height number
|
|
image_thumbnail string #base64 data string or filepath for video thumbnails
|
|
local_path string NULL
|
|
mime_type string
|
|
name string
|
|
post_id string INDEX FK >- Post.id
|
|
size number
|
|
width number
|
|
|
|
|
|
MyChannel
|
|
-
|
|
id PK string FK - Channel.id # same as Channel.id
|
|
is_unread boolean
|
|
last_post_at number
|
|
last_viewed_at number
|
|
manually_unread boolean
|
|
mentions_count number
|
|
message_count number
|
|
roles string
|
|
viewed_at number
|
|
|
|
|
|
MyChannelSettings
|
|
-
|
|
id PK string FK - MyChannel.id # same as Channel.id
|
|
notify_props string
|
|
|
|
|
|
MyTeam
|
|
-
|
|
id PK string FK - Team.id # same as Team.id
|
|
roles string
|
|
|
|
|
|
|
|
Post
|
|
-
|
|
id PK string # server generated
|
|
channel_id string INDEX FK >- Channel.id
|
|
create_at number
|
|
delete_at number
|
|
edit_at number
|
|
is_pinned boolean
|
|
message string
|
|
metadata string NULL
|
|
original_id string
|
|
pending_post_id string INDEX
|
|
previous_post_id string
|
|
props string
|
|
root_id string
|
|
type string
|
|
update_at number
|
|
user_id string INDEX FK >- User.id
|
|
|
|
|
|
PostsInChannel
|
|
-
|
|
id PK string # auto-generated
|
|
channel_id string INDEX FK >- Channel.id
|
|
earliest number
|
|
latest number
|
|
|
|
|
|
PostsInThread
|
|
-
|
|
id PK string # auto-generated
|
|
earliest number
|
|
latest number
|
|
root_id string FK >- Post.id
|
|
|
|
|
|
Preference
|
|
-
|
|
id string PK # server-generated
|
|
category string INDEX
|
|
name string
|
|
user_id string INDEX FK >- User.id
|
|
value string
|
|
|
|
|
|
Reaction
|
|
-
|
|
id PK string # server-generated
|
|
create_at number
|
|
emoji_name string
|
|
post_id string INDEX FK >- Post.id
|
|
user_id string INDEX FK >- User.id
|
|
|
|
|
|
Role
|
|
-
|
|
id PK string # server-generated
|
|
name string
|
|
permissions string #stringify array
|
|
|
|
|
|
System
|
|
-
|
|
id PK string # SYSTEM_IDENTIFIERS
|
|
value string
|
|
|
|
|
|
Team
|
|
-
|
|
id PK string # server-generated
|
|
allowed_domains string
|
|
description string
|
|
display_name string
|
|
is_allow_open_invite boolean
|
|
is_group_constrained boolean
|
|
last_team_icon_updated_at number
|
|
name string
|
|
type string
|
|
update_at number
|
|
|
|
|
|
TeamChannelHistory
|
|
-
|
|
id PK string FK - Team.id # same as Team.id
|
|
channel_ids string # stringified JSON array; FIFO
|
|
|
|
|
|
TeamMembership
|
|
-
|
|
id PK string # auto-generated
|
|
team_id string INDEX FK >- Team.id
|
|
user_id string INDEX FK >- User.id
|
|
|
|
|
|
TeamSearchHistory
|
|
-
|
|
id PK string # auto-generated
|
|
created_at number
|
|
display_term string
|
|
team_id string FK >- Team.id
|
|
term string
|
|
|
|
|
|
Thread
|
|
-
|
|
id PK string FK - Post.id # similar to Post.id but for root post only
|
|
is_following boolean
|
|
last_reply_at number
|
|
last_viewed_at number
|
|
reply_count number
|
|
unread_mentions number
|
|
unread_replies number
|
|
viewed_at number
|
|
|
|
|
|
ThreadsInTeam
|
|
-
|
|
id PK string # auto-generated
|
|
loaded_in_global_threads boolean
|
|
team_id string INDEX FK >- Team.id
|
|
thread_id string INDEX
|
|
|
|
|
|
ThreadParticipant # who is participating in this conversation
|
|
-
|
|
id PK string # auto-generated
|
|
thread_id string INDEX FK >- Thread.id
|
|
user_id string INDEX FK >- User.id
|
|
|
|
|
|
User
|
|
-
|
|
id PK string # server generated
|
|
auth_service string
|
|
delete_at number
|
|
email string
|
|
first_name string
|
|
is_bot boolean
|
|
is_guest boolean
|
|
last_name string
|
|
last_picture_update number
|
|
locale string
|
|
nickname string
|
|
notify_props string
|
|
position string
|
|
props string
|
|
remote_id string NULL
|
|
roles string
|
|
status string
|
|
timezone string
|
|
update_at number
|
|
username string
|