MM_30476 [v2] Section 'Team' of the Server schema (#5071)

* MM_30476 : Added all isolated tables from the server schema

* MM_30476 : Updated 'test' script in package.json

* MM_30476 : ADDED team section of the server schema

* MM_30476 : Apply suggestions from code review

Co-authored-by: Miguel Alatzar <migbot@users.noreply.github.com>

* MM_30476 : Apply suggestions from code review

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>

* MM_30476 : Updates to field name and description

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
Co-authored-by: Hossein <hahmadia@users.noreply.github.com>

* MM_30476 : Updated my_team and team_search_history description

* MM_30476 : Prefixing boolean fields with 'is'

* MM_30476 : Updated channel.d.ts

Co-authored-by: Hossein <hahmadia@users.noreply.github.com>
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>

* MM_30476 : ADDED lazy queries to TeamMembership

Two methods that will retrieve all users in a team and all the teams that a user is part of

* MM_30476 : Updated descriptions for the associations

* MM_30476 : Updated tests as server schema was updated

* MM_30476 : Updated Team to have a 1:1 relationship with TeamChannelHistory

* MM_30476 : Updated team_membership and user

Co-authored-by: Miguel Alatzar <migbot@users.noreply.github.com>
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
Co-authored-by: Hossein <hahmadia@users.noreply.github.com>
This commit is contained in:
Avinash Lingaloo
2021-01-11 21:54:33 +04:00
committed by GitHub
parent 3e8c275486
commit 89d4cf235f
25 changed files with 1069 additions and 2 deletions

View File

@@ -3,14 +3,31 @@
import {AppSchema, appSchema} from '@nozbe/watermelondb';
import {CustomEmojiSchema, RoleSchema, SystemSchema, TermsOfServiceSchema} from './table_schemas';
import {
CustomEmojiSchema,
MyTeamSchema,
RoleSchema,
SlashCommandSchema,
SystemSchema,
TeamChannelHistorySchema,
TeamMembershipSchema,
TeamSchema,
TeamSearchHistorySchema,
TermsOfServiceSchema,
} from './table_schemas';
export const serverSchema: AppSchema = appSchema({
version: 1,
tables: [
CustomEmojiSchema,
MyTeamSchema,
RoleSchema,
SlashCommandSchema,
SystemSchema,
TeamChannelHistorySchema,
TeamMembershipSchema,
TeamSchema,
TeamSearchHistorySchema,
TermsOfServiceSchema,
],
});

View File

@@ -2,6 +2,12 @@
// See LICENSE.txt for license information.
export {default as CustomEmojiSchema} from './custom_emoji';
export {default as MyTeamSchema} from './my_team';
export {default as RoleSchema} from './role';
export {default as SlashCommandSchema} from './slash_command';
export {default as SystemSchema} from './system';
export {default as TeamChannelHistorySchema} from './team_channel_history';
export {default as TeamMembershipSchema} from './team_membership';
export {default as TeamSchema} from './team';
export {default as TeamSearchHistorySchema} from './team_search_history';
export {default as TermsOfServiceSchema} from './terms_of_service';

View File

@@ -0,0 +1,18 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {tableSchema} from '@nozbe/watermelondb';
import {MM_TABLES} from '@constants/database';
const {MY_TEAM} = MM_TABLES.SERVER;
export default tableSchema({
name: MY_TEAM,
columns: [
{name: 'is_unread', type: 'boolean'},
{name: 'mentions_count', type: 'number'},
{name: 'roles', type: 'string'},
{name: 'team_id', type: 'string', isIndexed: true},
],
});

View File

@@ -0,0 +1,22 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {tableSchema} from '@nozbe/watermelondb';
import {MM_TABLES} from '@constants/database';
const {SLASH_COMMAND} = MM_TABLES.SERVER;
export default tableSchema({
name: SLASH_COMMAND,
columns: [
{name: 'is_auto_complete', type: 'boolean'},
{name: 'description', type: 'string'},
{name: 'display_name', type: 'string'},
{name: 'hint', type: 'string'},
{name: 'method', type: 'string'},
{name: 'team_id', type: 'string', isIndexed: true},
{name: 'token', type: 'string'},
{name: 'trigger', type: 'string'},
],
});

View File

@@ -0,0 +1,22 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {tableSchema} from '@nozbe/watermelondb';
import {MM_TABLES} from '@constants/database';
const {TEAM} = MM_TABLES.SERVER;
export default tableSchema({
name: TEAM,
columns: [
{name: 'is_allow_open_invite', type: 'boolean'},
{name: 'allowed_domains', type: 'string'},
{name: 'description', type: 'string'},
{name: 'display_name', type: 'string'},
{name: 'is_group_constrained', type: 'boolean'},
{name: 'last_team_icon_updated_at', type: 'number'},
{name: 'name', type: 'string'},
{name: 'type', type: 'string'},
],
});

View File

@@ -0,0 +1,16 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {tableSchema} from '@nozbe/watermelondb';
import {MM_TABLES} from '@constants/database';
const {TEAM_CHANNEL_HISTORY} = MM_TABLES.SERVER;
export default tableSchema({
name: TEAM_CHANNEL_HISTORY,
columns: [
{name: 'channel_ids', type: 'string'},
{name: 'team_id', type: 'string', isIndexed: true},
],
});

View File

@@ -0,0 +1,16 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {tableSchema} from '@nozbe/watermelondb';
import {MM_TABLES} from '@constants/database';
const {TEAM_MEMBERSHIP} = MM_TABLES.SERVER;
export default tableSchema({
name: TEAM_MEMBERSHIP,
columns: [
{name: 'team_id', type: 'string', isIndexed: true},
{name: 'user_id', type: 'string', isIndexed: true},
],
});

View File

@@ -0,0 +1,18 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {tableSchema} from '@nozbe/watermelondb';
import {MM_TABLES} from '@constants/database';
const {TEAM_SEARCH_HISTORY} = MM_TABLES.SERVER;
export default tableSchema({
name: TEAM_SEARCH_HISTORY,
columns: [
{name: 'created_at', type: 'number'},
{name: 'display_term', type: 'string'},
{name: 'team_id', type: 'string', isIndexed: true},
{name: 'term', type: 'string'},
],
});

View File

@@ -4,7 +4,19 @@
import {MM_TABLES} from '@constants/database';
import {serverSchema} from './index';
const {CUSTOM_EMOJI, ROLE, SYSTEM, TERMS_OF_SERVICE} = MM_TABLES.SERVER;
const {
CUSTOM_EMOJI,
MY_TEAM,
ROLE,
SLASH_COMMAND,
SYSTEM,
TERMS_OF_SERVICE,
TEAM,
TEAM_CHANNEL_HISTORY,
TEAM_MEMBERSHIP,
TEAM_SEARCH_HISTORY,
} = MM_TABLES.SERVER;
describe('*** Test schema for SERVER database ***', () => {
it('=> The SERVER SCHEMA should strictly match', () => {
@@ -20,6 +32,21 @@ describe('*** Test schema for SERVER database ***', () => {
{name: 'name', type: 'string'},
],
},
[MY_TEAM]: {
name: MY_TEAM,
columns: {
is_unread: {name: 'is_unread', type: 'boolean'},
mentions_count: {name: 'mentions_count', type: 'number'},
roles: {name: 'roles', type: 'string'},
team_id: {name: 'team_id', type: 'string', isIndexed: true},
},
columnArray: [
{name: 'is_unread', type: 'boolean'},
{name: 'mentions_count', type: 'number'},
{name: 'roles', type: 'string'},
{name: 'team_id', type: 'string', isIndexed: true},
],
},
[ROLE]: {
name: ROLE,
columns: {
@@ -31,6 +58,29 @@ describe('*** Test schema for SERVER database ***', () => {
{name: 'permissions', type: 'string'},
],
},
[SLASH_COMMAND]: {
name: SLASH_COMMAND,
columns: {
is_auto_complete: {name: 'is_auto_complete', type: 'boolean'},
description: {name: 'description', type: 'string'},
display_name: {name: 'display_name', type: 'string'},
hint: {name: 'hint', type: 'string'},
method: {name: 'method', type: 'string'},
team_id: {name: 'team_id', type: 'string', isIndexed: true},
token: {name: 'token', type: 'string'},
trigger: {name: 'trigger', type: 'string'},
},
columnArray: [
{name: 'is_auto_complete', type: 'boolean'},
{name: 'description', type: 'string'},
{name: 'display_name', type: 'string'},
{name: 'hint', type: 'string'},
{name: 'method', type: 'string'},
{name: 'team_id', type: 'string', isIndexed: true},
{name: 'token', type: 'string'},
{name: 'trigger', type: 'string'},
],
},
[SYSTEM]: {
name: SYSTEM,
columns: {
@@ -42,6 +92,67 @@ describe('*** Test schema for SERVER database ***', () => {
{name: 'value', type: 'string'},
],
},
[TEAM]: {
name: TEAM,
columns: {
is_allow_open_invite: {name: 'is_allow_open_invite', type: 'boolean'},
allowed_domains: {name: 'allowed_domains', type: 'string'},
description: {name: 'description', type: 'string'},
display_name: {name: 'display_name', type: 'string'},
is_group_constrained: {name: 'is_group_constrained', type: 'boolean'},
last_team_icon_updated_at: {name: 'last_team_icon_updated_at', type: 'number'},
name: {name: 'name', type: 'string'},
type: {name: 'type', type: 'string'},
},
columnArray: [
{name: 'is_allow_open_invite', type: 'boolean'},
{name: 'allowed_domains', type: 'string'},
{name: 'description', type: 'string'},
{name: 'display_name', type: 'string'},
{name: 'is_group_constrained', type: 'boolean'},
{name: 'last_team_icon_updated_at', type: 'number'},
{name: 'name', type: 'string'},
{name: 'type', type: 'string'},
],
},
[TEAM_CHANNEL_HISTORY]: {
name: TEAM_CHANNEL_HISTORY,
columns: {
channel_ids: {name: 'channel_ids', type: 'string'},
team_id: {name: 'team_id', type: 'string', isIndexed: true},
},
columnArray: [
{name: 'channel_ids', type: 'string'},
{name: 'team_id', type: 'string', isIndexed: true},
],
},
[TEAM_MEMBERSHIP]: {
name: TEAM_MEMBERSHIP,
columns: {
team_id: {name: 'team_id', type: 'string', isIndexed: true},
user_id: {name: 'user_id', type: 'string', isIndexed: true},
},
columnArray: [
{name: 'team_id', type: 'string', isIndexed: true},
{name: 'user_id', type: 'string', isIndexed: true},
],
},
[TEAM_SEARCH_HISTORY]: {
name: TEAM_SEARCH_HISTORY,
columns: {
created_at: {name: 'created_at', type: 'number'},
display_term: {name: 'display_term', type: 'string'},
team_id: {name: 'team_id', type: 'string', isIndexed: true},
term: {name: 'term', type: 'string'},
},
columnArray: [
{name: 'created_at', type: 'number'},
{name: 'display_term', type: 'string'},
{name: 'team_id', type: 'string', isIndexed: true},
{name: 'term', type: 'string'},
],
},
[TERMS_OF_SERVICE]: {
name: TERMS_OF_SERVICE,
columns: {