mirror of
https://github.com/mattermost/mattermost-mobile.git
synced 2026-11-05 02:18:56 +00:00
* Add BoardView, PropertyField, PropertyValue WatermelonDB tables Data-layer groundwork for the Integrated Boards feature. Bumps the server schema from v19 to v20 and adds three new tables with their models, transformers, handler mixin, and tests. No queries, actions, or UI yet — those arrive with follow-up work. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Align boards types with server contract (BO/BP, KanbanProps) Widen ChannelType to include BO/BP, add OPEN_BOARD/PRIVATE_BOARD and CHANNEL_PROPS.BOARD_LINKED_PROPERTIES constants, and replace the free-form View.props with the typed KanbanProps/KanbanGroupBy/ KanbanColumn shape from mattermost/mattermost#35887. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Allow null View.props to match transformer behavior The boards transformer assigns null to view.props when neither the incoming record nor existing row provides one, but the View type declared props as non-nullable. Widen to KanbanProps | null so consumers don't need unsafe non-null assertions. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * remove test that don't provide value * Throw synchronously in boards transformers for consistency Other server transformers (channel, category, post, custom_profile) throw synchronously from their non-async Promise-returning signatures when a non-create action is called without an existing record. The boards transformer was the odd one out using Promise.reject; align it with the prevailing pattern and update the two tests to assert the synchronous throw via expect(() => ...).toThrow. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Allow null View.description to match transformer behavior The schema marks description as isOptional, the model types it as string | null, and the transformer assigns null when the raw payload omits it. The wire type was string | undefined only — widen to string | null | undefined so callers handle the null the transformer can write through. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Make View.props optional to match nullable schema contract Schema marks props as isOptional and model types it as KanbanProps | null, so ViewPatch consumers should be able to omit or clear it. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Rename View → BoardView across the boards data layer Avoids the symbol clash with React Native's View component and gives the migration/handler names a clearer boards-specific identity. Renames: - API type View → BoardView, ViewPatch → BoardViewPatch - Model class ViewModel → BoardViewModel - MM_TABLES.SERVER.VIEW → BOARD_VIEW (table name string unchanged) - transformViewRecord → transformBoardViewRecord - handleViews → handleBoardViews (views arg → boardViews) - HandleViewsArgs → HandleBoardViewsArgs Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Extract PropertyField/Value transformers and handlers into properties.ts PropertyField and PropertyValue are shared primitives, not boards-specific (future features such as cards and content flagging will reuse them). Moving them out of the boards files keeps the boards namespace focused on BoardView and lets other product features import the property handlers without a boards dependency. - transformers/properties.ts: transformPropertyFieldRecord, transformPropertyValueRecord - handlers/properties.ts: PropertiesHandler mixin + PropertiesHandlerMix - boards.ts files keep only BoardView code - ServerDataOperator now composes PropertiesHandler alongside BoardsHandler - Tests split into properties.test.ts and boards.test.ts accordingly Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Move boards code under app/products/boards (mirroring playbooks layout) BoardView is a boards-specific feature, so its model, schema, transformer, and handler should live alongside the rest of the product code rather than in the top-level database namespace. Adopt the same layout used by playbooks and agents. Structure: app/products/boards/ constants/database.ts (BOARDS_TABLES) database/ models/{index.ts,board_view.ts} schema/{index.ts,board_view.ts} operators/ transformers/{index.ts,index.test.ts} handlers/{index.ts,index.test.ts} types/ api.d.ts (ambient BoardView/KanbanProps/...) database/models/board_view.ts (BoardViewModel interface) Wiring: - tsconfig.json + babel.config.js: add @boards/* alias - DatabaseManager (+ mock): import BoardViewModel from @boards - Server schema index: import BoardViewSchema from @boards - ServerDataOperator: import BoardsHandler from @boards - Migration: import BOARD_VIEW from @boards/constants/database - MM_TABLES.SERVER no longer carries BOARD_VIEW - HandleBoardViewsArgs moved into the boards handler module (matches the playbooks pattern of co-locating handler args) PropertyField/PropertyValue remain at the top-level operator because they are shared infrastructure not tied to boards. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * update docs * fix(boards): register board database imports * test(boards): isolate handler database lifecycle * test(properties): isolate handler database lifecycle * snapshot * fix snapshots back --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1094 lines
59 KiB
TypeScript
1094 lines
59 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
/* eslint-disable max-lines */
|
|
|
|
import {BOARDS_TABLES} from '@boards/constants/database';
|
|
|
|
import {AGENTS_TABLES} from '@agents/constants/database';
|
|
import {MM_TABLES} from '@constants/database';
|
|
import {PLAYBOOK_TABLES} from '@playbooks/constants/database';
|
|
|
|
import {serverSchema} from './index';
|
|
|
|
const {AI_BOT, AI_THREAD} = AGENTS_TABLES;
|
|
const {BOARD_VIEW} = BOARDS_TABLES;
|
|
|
|
const {
|
|
CATEGORY,
|
|
CATEGORY_CHANNEL,
|
|
CHANNEL,
|
|
CHANNEL_BOOKMARK,
|
|
CHANNEL_INFO,
|
|
CHANNEL_MEMBERSHIP,
|
|
CONFIG,
|
|
CUSTOM_EMOJI,
|
|
CUSTOM_PROFILE_FIELD,
|
|
CUSTOM_PROFILE_ATTRIBUTE,
|
|
DRAFT,
|
|
FILE,
|
|
GROUP,
|
|
GROUP_CHANNEL,
|
|
GROUP_MEMBERSHIP,
|
|
GROUP_TEAM,
|
|
MY_CHANNEL,
|
|
MY_CHANNEL_SETTINGS,
|
|
MY_TEAM,
|
|
POST,
|
|
POSTS_IN_CHANNEL,
|
|
POSTS_IN_THREAD,
|
|
PREFERENCE,
|
|
PROPERTY_FIELD,
|
|
PROPERTY_VALUE,
|
|
REACTION,
|
|
ROLE,
|
|
SCHEDULED_POST,
|
|
SYSTEM,
|
|
TEAM,
|
|
TEAM_CHANNEL_HISTORY,
|
|
TEAM_MEMBERSHIP,
|
|
TEAM_SEARCH_HISTORY,
|
|
THREAD,
|
|
THREAD_PARTICIPANT,
|
|
THREADS_IN_TEAM,
|
|
TEAM_THREADS_SYNC,
|
|
USER,
|
|
} = MM_TABLES.SERVER;
|
|
|
|
const {PLAYBOOK_RUN, PLAYBOOK_CHECKLIST, PLAYBOOK_CHECKLIST_ITEM, PLAYBOOK_RUN_ATTRIBUTE, PLAYBOOK_RUN_ATTRIBUTE_VALUE} = PLAYBOOK_TABLES;
|
|
|
|
describe('*** Test schema for SERVER database ***', () => {
|
|
it('=> The SERVER SCHEMA should strictly match', () => {
|
|
expect(serverSchema).toEqual({
|
|
version: 20,
|
|
unsafeSql: undefined,
|
|
tables: {
|
|
[AI_BOT]: {
|
|
name: AI_BOT,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
display_name: {name: 'display_name', type: 'string'},
|
|
username: {name: 'username', type: 'string'},
|
|
last_icon_update: {name: 'last_icon_update', type: 'number'},
|
|
dm_channel_id: {name: 'dm_channel_id', type: 'string', isIndexed: true},
|
|
channel_access_level: {name: 'channel_access_level', type: 'number'},
|
|
channel_ids: {name: 'channel_ids', type: 'string'},
|
|
user_access_level: {name: 'user_access_level', type: 'number'},
|
|
user_ids: {name: 'user_ids', type: 'string'},
|
|
team_ids: {name: 'team_ids', type: 'string'},
|
|
},
|
|
columnArray: [
|
|
{name: 'display_name', type: 'string'},
|
|
{name: 'username', type: 'string'},
|
|
{name: 'last_icon_update', type: 'number'},
|
|
{name: 'dm_channel_id', type: 'string', isIndexed: true},
|
|
{name: 'channel_access_level', type: 'number'},
|
|
{name: 'channel_ids', type: 'string'},
|
|
{name: 'user_access_level', type: 'number'},
|
|
{name: 'user_ids', type: 'string'},
|
|
{name: 'team_ids', type: 'string'},
|
|
],
|
|
},
|
|
[AI_THREAD]: {
|
|
name: AI_THREAD,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
message: {name: 'message', type: 'string'},
|
|
title: {name: 'title', type: 'string'},
|
|
channel_id: {name: 'channel_id', type: 'string', isIndexed: true},
|
|
reply_count: {name: 'reply_count', type: 'number'},
|
|
update_at: {name: 'update_at', type: 'number', isIndexed: true},
|
|
},
|
|
columnArray: [
|
|
{name: 'message', type: 'string'},
|
|
{name: 'title', type: 'string'},
|
|
{name: 'channel_id', type: 'string', isIndexed: true},
|
|
{name: 'reply_count', type: 'number'},
|
|
{name: 'update_at', type: 'number', isIndexed: true},
|
|
],
|
|
},
|
|
[CATEGORY]: {
|
|
name: CATEGORY,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
collapsed: {name: 'collapsed', type: 'boolean'},
|
|
display_name: {name: 'display_name', type: 'string'},
|
|
muted: {name: 'muted', type: 'boolean'},
|
|
sort_order: {name: 'sort_order', type: 'number'},
|
|
sorting: {name: 'sorting', type: 'string'},
|
|
team_id: {name: 'team_id', type: 'string', isIndexed: true},
|
|
type: {name: 'type', type: 'string'},
|
|
},
|
|
columnArray: [
|
|
{name: 'collapsed', type: 'boolean'},
|
|
{name: 'display_name', type: 'string'},
|
|
{name: 'muted', type: 'boolean'},
|
|
{name: 'sort_order', type: 'number'},
|
|
{name: 'sorting', type: 'string'},
|
|
{name: 'team_id', type: 'string', isIndexed: true},
|
|
{name: 'type', type: 'string'},
|
|
],
|
|
},
|
|
[CATEGORY_CHANNEL]: {
|
|
name: CATEGORY_CHANNEL,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
category_id: {name: 'category_id', type: 'string', isIndexed: true},
|
|
channel_id: {name: 'channel_id', type: 'string', isIndexed: true},
|
|
sort_order: {name: 'sort_order', type: 'number'},
|
|
},
|
|
columnArray: [
|
|
{name: 'category_id', type: 'string', isIndexed: true},
|
|
{name: 'channel_id', type: 'string', isIndexed: true},
|
|
{name: 'sort_order', type: 'number'},
|
|
],
|
|
},
|
|
[CHANNEL_INFO]: {
|
|
name: CHANNEL_INFO,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
guest_count: {name: 'guest_count', type: 'number'},
|
|
header: {name: 'header', type: 'string'},
|
|
member_count: {name: 'member_count', type: 'number'},
|
|
pinned_post_count: {name: 'pinned_post_count', type: 'number'},
|
|
files_count: {name: 'files_count', type: 'number'},
|
|
purpose: {name: 'purpose', type: 'string'},
|
|
},
|
|
columnArray: [
|
|
{name: 'guest_count', type: 'number'},
|
|
{name: 'header', type: 'string'},
|
|
{name: 'member_count', type: 'number'},
|
|
{name: 'pinned_post_count', type: 'number'},
|
|
{name: 'files_count', type: 'number'},
|
|
{name: 'purpose', type: 'string'},
|
|
],
|
|
},
|
|
[CHANNEL]: {
|
|
name: CHANNEL,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
create_at: {name: 'create_at', type: 'number'},
|
|
creator_id: {name: 'creator_id', type: 'string', isIndexed: true},
|
|
delete_at: {name: 'delete_at', type: 'number'},
|
|
display_name: {name: 'display_name', type: 'string'},
|
|
is_group_constrained: {
|
|
name: 'is_group_constrained',
|
|
type: 'boolean',
|
|
},
|
|
name: {name: 'name', type: 'string', isIndexed: true},
|
|
shared: {name: 'shared', type: 'boolean'},
|
|
team_id: {name: 'team_id', type: 'string', isIndexed: true},
|
|
type: {name: 'type', type: 'string'},
|
|
update_at: {name: 'update_at', type: 'number'},
|
|
banner_info: {name: 'banner_info', type: 'string', isOptional: true},
|
|
abac_policy_enforced: {name: 'abac_policy_enforced', type: 'boolean', isOptional: true},
|
|
autotranslation: {name: 'autotranslation', type: 'boolean', isOptional: true},
|
|
},
|
|
columnArray: [
|
|
{name: 'create_at', type: 'number'},
|
|
{name: 'creator_id', type: 'string', isIndexed: true},
|
|
{name: 'delete_at', type: 'number'},
|
|
{name: 'display_name', type: 'string'},
|
|
{name: 'is_group_constrained', type: 'boolean'},
|
|
{name: 'name', type: 'string', isIndexed: true},
|
|
{name: 'shared', type: 'boolean'},
|
|
{name: 'team_id', type: 'string', isIndexed: true},
|
|
{name: 'type', type: 'string'},
|
|
{name: 'update_at', type: 'number'},
|
|
{name: 'banner_info', type: 'string', isOptional: true},
|
|
{name: 'abac_policy_enforced', type: 'boolean', isOptional: true},
|
|
{name: 'autotranslation', type: 'boolean', isOptional: true},
|
|
],
|
|
},
|
|
[CHANNEL_BOOKMARK]: {
|
|
name: CHANNEL_BOOKMARK,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
create_at: {name: 'create_at', type: 'number'},
|
|
update_at: {name: 'update_at', type: 'number'},
|
|
delete_at: {name: 'delete_at', type: 'number'},
|
|
channel_id: {name: 'channel_id', type: 'string', isIndexed: true},
|
|
owner_id: {name: 'owner_id', type: 'string'},
|
|
file_id: {name: 'file_id', type: 'string', isOptional: true},
|
|
display_name: {name: 'display_name', type: 'string'},
|
|
sort_order: {name: 'sort_order', type: 'number'},
|
|
link_url: {name: 'link_url', type: 'string', isOptional: true},
|
|
image_url: {name: 'image_url', type: 'string', isOptional: true},
|
|
emoji: {name: 'emoji', type: 'string', isOptional: true},
|
|
type: {name: 'type', type: 'string'},
|
|
original_id: {name: 'original_id', type: 'string', isOptional: true},
|
|
parent_id: {name: 'parent_id', type: 'string', isOptional: true},
|
|
|
|
},
|
|
columnArray: [
|
|
{name: 'create_at', type: 'number'},
|
|
{name: 'update_at', type: 'number'},
|
|
{name: 'delete_at', type: 'number'},
|
|
{name: 'channel_id', type: 'string', isIndexed: true},
|
|
{name: 'owner_id', type: 'string'},
|
|
{name: 'file_id', type: 'string', isOptional: true},
|
|
{name: 'display_name', type: 'string'},
|
|
{name: 'sort_order', type: 'number'},
|
|
{name: 'link_url', type: 'string', isOptional: true},
|
|
{name: 'image_url', type: 'string', isOptional: true},
|
|
{name: 'emoji', type: 'string', isOptional: true},
|
|
{name: 'type', type: 'string'},
|
|
{name: 'original_id', type: 'string', isOptional: true},
|
|
{name: 'parent_id', type: 'string', isOptional: true},
|
|
],
|
|
},
|
|
[CHANNEL_MEMBERSHIP]: {
|
|
name: CHANNEL_MEMBERSHIP,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
channel_id: {name: 'channel_id', type: 'string', isIndexed: true},
|
|
user_id: {name: 'user_id', type: 'string', isIndexed: true},
|
|
scheme_admin: {name: 'scheme_admin', type: 'boolean'},
|
|
},
|
|
columnArray: [
|
|
{name: 'channel_id', type: 'string', isIndexed: true},
|
|
{name: 'user_id', type: 'string', isIndexed: true},
|
|
{name: 'scheme_admin', type: 'boolean'},
|
|
],
|
|
},
|
|
[CONFIG]: {
|
|
name: CONFIG,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
value: {name: 'value', type: 'string'},
|
|
},
|
|
columnArray: [
|
|
{name: 'value', type: 'string'},
|
|
],
|
|
},
|
|
[CUSTOM_EMOJI]: {
|
|
name: CUSTOM_EMOJI,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
name: {name: 'name', type: 'string', isIndexed: true},
|
|
},
|
|
columnArray: [{name: 'name', type: 'string', isIndexed: true}],
|
|
},
|
|
[CUSTOM_PROFILE_FIELD]: {
|
|
name: CUSTOM_PROFILE_FIELD,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
group_id: {name: 'group_id', type: 'string'},
|
|
name: {name: 'name', type: 'string'},
|
|
type: {name: 'type', type: 'string'},
|
|
target_id: {name: 'target_id', type: 'string'},
|
|
target_type: {name: 'target_type', type: 'string'},
|
|
create_at: {name: 'create_at', type: 'number'},
|
|
update_at: {name: 'update_at', type: 'number'},
|
|
delete_at: {name: 'delete_at', type: 'number'},
|
|
attrs: {name: 'attrs', type: 'string', isOptional: true},
|
|
},
|
|
columnArray: [
|
|
{name: 'group_id', type: 'string'},
|
|
{name: 'name', type: 'string'},
|
|
{name: 'type', type: 'string'},
|
|
{name: 'target_id', type: 'string'},
|
|
{name: 'target_type', type: 'string'},
|
|
{name: 'create_at', type: 'number'},
|
|
{name: 'update_at', type: 'number'},
|
|
{name: 'delete_at', type: 'number'},
|
|
{name: 'attrs', type: 'string', isOptional: true},
|
|
],
|
|
},
|
|
[CUSTOM_PROFILE_ATTRIBUTE]: {
|
|
name: CUSTOM_PROFILE_ATTRIBUTE,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
field_id: {name: 'field_id', type: 'string', isIndexed: true},
|
|
user_id: {name: 'user_id', type: 'string', isIndexed: true},
|
|
value: {name: 'value', type: 'string'},
|
|
},
|
|
columnArray: [
|
|
{name: 'field_id', type: 'string', isIndexed: true},
|
|
{name: 'user_id', type: 'string', isIndexed: true},
|
|
{name: 'value', type: 'string'},
|
|
],
|
|
},
|
|
[MY_CHANNEL]: {
|
|
name: MY_CHANNEL,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
is_unread: {name: 'is_unread', type: 'boolean'},
|
|
last_post_at: {name: 'last_post_at', type: 'number'},
|
|
last_viewed_at: {name: 'last_viewed_at', type: 'number'},
|
|
manually_unread: {name: 'manually_unread', type: 'boolean'},
|
|
mentions_count: {name: 'mentions_count', type: 'number'},
|
|
message_count: {name: 'message_count', type: 'number'},
|
|
roles: {name: 'roles', type: 'string'},
|
|
viewed_at: {name: 'viewed_at', type: 'number'},
|
|
last_fetched_at: {name: 'last_fetched_at', type: 'number', isIndexed: true},
|
|
last_playbook_runs_fetch_at: {name: 'last_playbook_runs_fetch_at', type: 'number'},
|
|
autotranslation_disabled: {name: 'autotranslation_disabled', type: 'boolean', isOptional: true},
|
|
},
|
|
columnArray: [
|
|
{name: 'is_unread', type: 'boolean'},
|
|
{name: 'last_post_at', type: 'number'},
|
|
{name: 'last_viewed_at', type: 'number'},
|
|
{name: 'manually_unread', type: 'boolean'},
|
|
{name: 'mentions_count', type: 'number'},
|
|
{name: 'message_count', type: 'number'},
|
|
{name: 'roles', type: 'string'},
|
|
{name: 'viewed_at', type: 'number'},
|
|
{name: 'last_fetched_at', type: 'number', isIndexed: true},
|
|
{name: 'last_playbook_runs_fetch_at', type: 'number'},
|
|
{name: 'autotranslation_disabled', type: 'boolean', isOptional: true},
|
|
],
|
|
},
|
|
[MY_CHANNEL_SETTINGS]: {
|
|
name: MY_CHANNEL_SETTINGS,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
notify_props: {name: 'notify_props', type: 'string'},
|
|
},
|
|
columnArray: [
|
|
{name: 'notify_props', type: 'string'},
|
|
],
|
|
},
|
|
[POSTS_IN_CHANNEL]: {
|
|
name: POSTS_IN_CHANNEL,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
channel_id: {name: 'channel_id', type: 'string', isIndexed: true},
|
|
earliest: {name: 'earliest', type: 'number'},
|
|
latest: {name: 'latest', type: 'number'},
|
|
},
|
|
columnArray: [
|
|
{name: 'channel_id', type: 'string', isIndexed: true},
|
|
{name: 'earliest', type: 'number'},
|
|
{name: 'latest', type: 'number'},
|
|
],
|
|
},
|
|
[DRAFT]: {
|
|
name: DRAFT,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
channel_id: {name: 'channel_id', type: 'string', isIndexed: true},
|
|
files: {name: 'files', type: 'string'},
|
|
message: {name: 'message', type: 'string'},
|
|
root_id: {name: 'root_id', type: 'string', isIndexed: true},
|
|
metadata: {name: 'metadata', type: 'string', isOptional: true},
|
|
update_at: {name: 'update_at', type: 'number'},
|
|
type: {name: 'type', type: 'string', isOptional: true},
|
|
},
|
|
columnArray: [
|
|
{name: 'channel_id', type: 'string', isIndexed: true},
|
|
{name: 'files', type: 'string'},
|
|
{name: 'message', type: 'string'},
|
|
{name: 'root_id', type: 'string', isIndexed: true},
|
|
{name: 'metadata', type: 'string', isOptional: true},
|
|
{name: 'update_at', type: 'number'},
|
|
{name: 'type', type: 'string', isOptional: true},
|
|
],
|
|
},
|
|
[FILE]: {
|
|
name: FILE,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
extension: {name: 'extension', type: 'string'},
|
|
height: {name: 'height', type: 'number'},
|
|
image_thumbnail: {name: 'image_thumbnail', type: 'string'},
|
|
local_path: {name: 'local_path', type: 'string', isOptional: true},
|
|
mime_type: {name: 'mime_type', type: 'string'},
|
|
name: {name: 'name', type: 'string'},
|
|
post_id: {name: 'post_id', type: 'string', isIndexed: true},
|
|
size: {name: 'size', type: 'number'},
|
|
width: {name: 'width', type: 'number'},
|
|
is_blocked: {name: 'is_blocked', type: 'boolean'},
|
|
},
|
|
columnArray: [
|
|
{name: 'extension', type: 'string'},
|
|
{name: 'height', type: 'number'},
|
|
{name: 'image_thumbnail', type: 'string'},
|
|
{name: 'local_path', type: 'string', isOptional: true},
|
|
{name: 'mime_type', type: 'string'},
|
|
{name: 'name', type: 'string'},
|
|
{name: 'post_id', type: 'string', isIndexed: true},
|
|
{name: 'size', type: 'number'},
|
|
{name: 'width', type: 'number'},
|
|
{name: 'is_blocked', type: 'boolean'},
|
|
],
|
|
},
|
|
[GROUP]: {
|
|
name: GROUP,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
display_name: {name: 'display_name', type: 'string'},
|
|
name: {name: 'name', type: 'string', isIndexed: true},
|
|
description: {name: 'description', type: 'string'},
|
|
source: {name: 'source', type: 'string'},
|
|
remote_id: {name: 'remote_id', type: 'string', isIndexed: true},
|
|
created_at: {name: 'created_at', type: 'number'},
|
|
updated_at: {name: 'updated_at', type: 'number'},
|
|
deleted_at: {name: 'deleted_at', type: 'number'},
|
|
member_count: {name: 'member_count', type: 'number'},
|
|
},
|
|
columnArray: [
|
|
{name: 'display_name', type: 'string'},
|
|
{name: 'name', type: 'string', isIndexed: true},
|
|
{name: 'description', type: 'string'},
|
|
{name: 'source', type: 'string'},
|
|
{name: 'remote_id', type: 'string', isIndexed: true},
|
|
{name: 'created_at', type: 'number'},
|
|
{name: 'updated_at', type: 'number'},
|
|
{name: 'deleted_at', type: 'number'},
|
|
{name: 'member_count', type: 'number'},
|
|
],
|
|
},
|
|
[GROUP_CHANNEL]: {
|
|
name: GROUP_CHANNEL,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
group_id: {name: 'group_id', type: 'string', isIndexed: true},
|
|
channel_id: {name: 'channel_id', type: 'string', isIndexed: true},
|
|
created_at: {name: 'created_at', type: 'number'},
|
|
updated_at: {name: 'updated_at', type: 'number'},
|
|
deleted_at: {name: 'deleted_at', type: 'number'},
|
|
},
|
|
columnArray: [
|
|
{name: 'group_id', type: 'string', isIndexed: true},
|
|
{name: 'channel_id', type: 'string', isIndexed: true},
|
|
{name: 'created_at', type: 'number'},
|
|
{name: 'updated_at', type: 'number'},
|
|
{name: 'deleted_at', type: 'number'},
|
|
],
|
|
},
|
|
[GROUP_MEMBERSHIP]: {
|
|
name: GROUP_MEMBERSHIP,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
group_id: {name: 'group_id', type: 'string', isIndexed: true},
|
|
user_id: {name: 'user_id', type: 'string', isIndexed: true},
|
|
created_at: {name: 'created_at', type: 'number'},
|
|
updated_at: {name: 'updated_at', type: 'number'},
|
|
deleted_at: {name: 'deleted_at', type: 'number'},
|
|
},
|
|
columnArray: [
|
|
{name: 'group_id', type: 'string', isIndexed: true},
|
|
{name: 'user_id', type: 'string', isIndexed: true},
|
|
{name: 'created_at', type: 'number'},
|
|
{name: 'updated_at', type: 'number'},
|
|
{name: 'deleted_at', type: 'number'},
|
|
],
|
|
},
|
|
[GROUP_TEAM]: {
|
|
name: GROUP_TEAM,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
group_id: {name: 'group_id', type: 'string', isIndexed: true},
|
|
team_id: {name: 'team_id', type: 'string', isIndexed: true},
|
|
created_at: {name: 'created_at', type: 'number'},
|
|
updated_at: {name: 'updated_at', type: 'number'},
|
|
deleted_at: {name: 'deleted_at', type: 'number'},
|
|
},
|
|
columnArray: [
|
|
{name: 'group_id', type: 'string', isIndexed: true},
|
|
{name: 'team_id', type: 'string', isIndexed: true},
|
|
{name: 'created_at', type: 'number'},
|
|
{name: 'updated_at', type: 'number'},
|
|
{name: 'deleted_at', type: 'number'},
|
|
],
|
|
},
|
|
[PLAYBOOK_RUN]: {
|
|
name: PLAYBOOK_RUN,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
playbook_id: {name: 'playbook_id', type: 'string'},
|
|
name: {name: 'name', type: 'string'},
|
|
description: {name: 'description', type: 'string'},
|
|
is_active: {name: 'is_active', type: 'boolean', isIndexed: true},
|
|
owner_user_id: {name: 'owner_user_id', type: 'string'},
|
|
team_id: {name: 'team_id', type: 'string'},
|
|
channel_id: {name: 'channel_id', type: 'string', isIndexed: true},
|
|
post_id: {name: 'post_id', type: 'string', isOptional: true},
|
|
create_at: {name: 'create_at', type: 'number'},
|
|
end_at: {name: 'end_at', type: 'number'},
|
|
active_stage: {name: 'active_stage', type: 'number'},
|
|
active_stage_title: {name: 'active_stage_title', type: 'string'},
|
|
participant_ids: {name: 'participant_ids', type: 'string'}, // JSON string
|
|
summary: {name: 'summary', type: 'string'},
|
|
current_status: {name: 'current_status', type: 'string', isIndexed: true},
|
|
last_status_update_at: {name: 'last_status_update_at', type: 'number'},
|
|
retrospective_enabled: {name: 'retrospective_enabled', type: 'boolean'},
|
|
retrospective: {name: 'retrospective', type: 'string'},
|
|
retrospective_published_at: {name: 'retrospective_published_at', type: 'number'},
|
|
sync: {name: 'sync', type: 'string', isIndexed: true, isOptional: true},
|
|
last_sync_at: {name: 'last_sync_at', type: 'number', isOptional: true},
|
|
items_order: {name: 'items_order', type: 'string'},
|
|
previous_reminder: {name: 'previous_reminder', type: 'number', isOptional: true},
|
|
update_at: {name: 'update_at', type: 'number'},
|
|
type: {name: 'type', type: 'string'},
|
|
},
|
|
columnArray: [
|
|
{name: 'playbook_id', type: 'string'},
|
|
{name: 'name', type: 'string'},
|
|
{name: 'description', type: 'string'},
|
|
{name: 'is_active', type: 'boolean', isIndexed: true},
|
|
{name: 'owner_user_id', type: 'string'},
|
|
{name: 'team_id', type: 'string'},
|
|
{name: 'channel_id', type: 'string', isIndexed: true},
|
|
{name: 'post_id', type: 'string', isOptional: true},
|
|
{name: 'create_at', type: 'number'},
|
|
{name: 'end_at', type: 'number'},
|
|
{name: 'active_stage', type: 'number'},
|
|
{name: 'active_stage_title', type: 'string'},
|
|
{name: 'participant_ids', type: 'string'}, // JSON string
|
|
{name: 'summary', type: 'string'},
|
|
{name: 'current_status', type: 'string', isIndexed: true},
|
|
{name: 'last_status_update_at', type: 'number'},
|
|
{name: 'retrospective_enabled', type: 'boolean'},
|
|
{name: 'retrospective', type: 'string'},
|
|
{name: 'retrospective_published_at', type: 'number'},
|
|
{name: 'sync', type: 'string', isIndexed: true, isOptional: true},
|
|
{name: 'last_sync_at', type: 'number', isOptional: true},
|
|
{name: 'previous_reminder', type: 'number', isOptional: true},
|
|
{name: 'items_order', type: 'string'},
|
|
{name: 'update_at', type: 'number'},
|
|
{name: 'type', type: 'string'},
|
|
],
|
|
},
|
|
[PLAYBOOK_CHECKLIST]: {
|
|
name: PLAYBOOK_CHECKLIST,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
run_id: {name: 'run_id', type: 'string', isIndexed: true},
|
|
title: {name: 'title', type: 'string'},
|
|
sync: {name: 'sync', type: 'string', isIndexed: true, isOptional: true},
|
|
last_sync_at: {name: 'last_sync_at', type: 'number', isOptional: true},
|
|
items_order: {name: 'items_order', type: 'string'},
|
|
update_at: {name: 'update_at', type: 'number'},
|
|
},
|
|
columnArray: [
|
|
{name: 'run_id', type: 'string', isIndexed: true},
|
|
{name: 'title', type: 'string'},
|
|
{name: 'sync', type: 'string', isIndexed: true, isOptional: true},
|
|
{name: 'last_sync_at', type: 'number', isOptional: true},
|
|
{name: 'items_order', type: 'string'},
|
|
{name: 'update_at', type: 'number'},
|
|
],
|
|
},
|
|
[PLAYBOOK_CHECKLIST_ITEM]: {
|
|
name: PLAYBOOK_CHECKLIST_ITEM,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
checklist_id: {name: 'checklist_id', type: 'string', isIndexed: true},
|
|
title: {name: 'title', type: 'string'},
|
|
state: {name: 'state', type: 'string', isIndexed: true},
|
|
state_modified: {name: 'state_modified', type: 'number'},
|
|
assignee_id: {name: 'assignee_id', type: 'string', isOptional: true},
|
|
assignee_modified: {name: 'assignee_modified', type: 'number'},
|
|
command: {name: 'command', type: 'string', isOptional: true},
|
|
command_last_run: {name: 'command_last_run', type: 'number'},
|
|
description: {name: 'description', type: 'string'},
|
|
due_date: {name: 'due_date', type: 'number'},
|
|
completed_at: {name: 'completed_at', type: 'number'},
|
|
task_actions: {name: 'task_actions', type: 'string', isOptional: true}, // JSON string
|
|
condition_action: {name: 'condition_action', type: 'string'},
|
|
condition_reason: {name: 'condition_reason', type: 'string'},
|
|
sync: {name: 'sync', type: 'string', isIndexed: true, isOptional: true},
|
|
last_sync_at: {name: 'last_sync_at', type: 'number', isOptional: true},
|
|
update_at: {name: 'update_at', type: 'number'},
|
|
},
|
|
columnArray: [
|
|
{name: 'checklist_id', type: 'string', isIndexed: true},
|
|
{name: 'title', type: 'string'},
|
|
{name: 'state', type: 'string', isIndexed: true},
|
|
{name: 'state_modified', type: 'number'},
|
|
{name: 'assignee_id', type: 'string', isOptional: true},
|
|
{name: 'assignee_modified', type: 'number'},
|
|
{name: 'command', type: 'string', isOptional: true},
|
|
{name: 'command_last_run', type: 'number'},
|
|
{name: 'description', type: 'string'},
|
|
{name: 'due_date', type: 'number'},
|
|
{name: 'completed_at', type: 'number'},
|
|
{name: 'task_actions', type: 'string', isOptional: true}, // JSON string
|
|
{name: 'condition_action', type: 'string'},
|
|
{name: 'condition_reason', type: 'string'},
|
|
{name: 'sync', type: 'string', isIndexed: true, isOptional: true},
|
|
{name: 'last_sync_at', type: 'number', isOptional: true},
|
|
{name: 'update_at', type: 'number'},
|
|
],
|
|
},
|
|
[PLAYBOOK_RUN_ATTRIBUTE]: {
|
|
name: PLAYBOOK_RUN_ATTRIBUTE,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
group_id: {name: 'group_id', type: 'string'},
|
|
name: {name: 'name', type: 'string'},
|
|
type: {name: 'type', type: 'string'},
|
|
target_id: {name: 'target_id', type: 'string'},
|
|
target_type: {name: 'target_type', type: 'string'},
|
|
create_at: {name: 'create_at', type: 'number'},
|
|
update_at: {name: 'update_at', type: 'number'},
|
|
delete_at: {name: 'delete_at', type: 'number'},
|
|
attrs: {name: 'attrs', type: 'string', isOptional: true},
|
|
},
|
|
columnArray: [
|
|
{name: 'group_id', type: 'string'},
|
|
{name: 'name', type: 'string'},
|
|
{name: 'type', type: 'string'},
|
|
{name: 'target_id', type: 'string'},
|
|
{name: 'target_type', type: 'string'},
|
|
{name: 'create_at', type: 'number'},
|
|
{name: 'update_at', type: 'number'},
|
|
{name: 'delete_at', type: 'number'},
|
|
{name: 'attrs', type: 'string', isOptional: true},
|
|
],
|
|
},
|
|
[PLAYBOOK_RUN_ATTRIBUTE_VALUE]: {
|
|
name: PLAYBOOK_RUN_ATTRIBUTE_VALUE,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
attribute_id: {name: 'attribute_id', type: 'string', isIndexed: true},
|
|
run_id: {name: 'run_id', type: 'string', isIndexed: true},
|
|
value: {name: 'value', type: 'string'},
|
|
update_at: {name: 'update_at', type: 'number'},
|
|
},
|
|
columnArray: [
|
|
{name: 'attribute_id', type: 'string', isIndexed: true},
|
|
{name: 'run_id', type: 'string', isIndexed: true},
|
|
{name: 'value', type: 'string'},
|
|
{name: 'update_at', type: 'number'},
|
|
],
|
|
},
|
|
[POSTS_IN_THREAD]: {
|
|
name: POSTS_IN_THREAD,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
earliest: {name: 'earliest', type: 'number'},
|
|
latest: {name: 'latest', type: 'number'},
|
|
root_id: {name: 'root_id', type: 'string', isIndexed: true},
|
|
},
|
|
columnArray: [
|
|
{name: 'earliest', type: 'number'},
|
|
{name: 'latest', type: 'number'},
|
|
{name: 'root_id', type: 'string', isIndexed: true},
|
|
],
|
|
},
|
|
[POST]: {
|
|
name: POST,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
channel_id: {name: 'channel_id', type: 'string', isIndexed: true},
|
|
create_at: {name: 'create_at', type: 'number'},
|
|
delete_at: {name: 'delete_at', type: 'number'},
|
|
edit_at: {name: 'edit_at', type: 'number'},
|
|
is_pinned: {name: 'is_pinned', type: 'boolean'},
|
|
message: {name: 'message', type: 'string'},
|
|
message_source: {name: 'message_source', type: 'string'},
|
|
metadata: {name: 'metadata', type: 'string', isOptional: true},
|
|
original_id: {name: 'original_id', type: 'string'},
|
|
pending_post_id: {name: 'pending_post_id', type: 'string', isIndexed: true},
|
|
previous_post_id: {name: 'previous_post_id', type: 'string'},
|
|
props: {name: 'props', type: 'string'},
|
|
root_id: {name: 'root_id', type: 'string'},
|
|
type: {name: 'type', type: 'string', isIndexed: true},
|
|
update_at: {name: 'update_at', type: 'number'},
|
|
user_id: {name: 'user_id', type: 'string', isIndexed: true},
|
|
},
|
|
columnArray: [
|
|
{name: 'channel_id', type: 'string', isIndexed: true},
|
|
{name: 'create_at', type: 'number'},
|
|
{name: 'delete_at', type: 'number'},
|
|
{name: 'edit_at', type: 'number'},
|
|
{name: 'is_pinned', type: 'boolean'},
|
|
{name: 'message', type: 'string'},
|
|
{name: 'message_source', type: 'string'},
|
|
{name: 'metadata', type: 'string', isOptional: true},
|
|
{name: 'original_id', type: 'string'},
|
|
{name: 'pending_post_id', type: 'string', isIndexed: true},
|
|
{name: 'previous_post_id', type: 'string'},
|
|
{name: 'props', type: 'string'},
|
|
{name: 'root_id', type: 'string'},
|
|
{name: 'type', type: 'string', isIndexed: true},
|
|
{name: 'update_at', type: 'number'},
|
|
{name: 'user_id', type: 'string', isIndexed: true},
|
|
],
|
|
},
|
|
[PREFERENCE]: {
|
|
name: PREFERENCE,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
category: {name: 'category', type: 'string', isIndexed: true},
|
|
name: {name: 'name', type: 'string'},
|
|
user_id: {name: 'user_id', type: 'string', isIndexed: true},
|
|
value: {name: 'value', type: 'string'},
|
|
},
|
|
columnArray: [
|
|
{name: 'category', type: 'string', isIndexed: true},
|
|
{name: 'name', type: 'string'},
|
|
{name: 'user_id', type: 'string', isIndexed: true},
|
|
{name: 'value', type: 'string'},
|
|
],
|
|
},
|
|
[REACTION]: {
|
|
name: REACTION,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
create_at: {name: 'create_at', type: 'number'},
|
|
emoji_name: {name: 'emoji_name', type: 'string'},
|
|
post_id: {name: 'post_id', type: 'string', isIndexed: true},
|
|
user_id: {name: 'user_id', type: 'string', isIndexed: true},
|
|
},
|
|
columnArray: [
|
|
{name: 'create_at', type: 'number'},
|
|
{name: 'emoji_name', type: 'string'},
|
|
{name: 'post_id', type: 'string', isIndexed: true},
|
|
{name: 'user_id', type: 'string', isIndexed: true},
|
|
],
|
|
},
|
|
[MY_TEAM]: {
|
|
name: MY_TEAM,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
roles: {name: 'roles', type: 'string'},
|
|
},
|
|
columnArray: [
|
|
{name: 'roles', type: 'string'},
|
|
],
|
|
},
|
|
[ROLE]: {
|
|
name: ROLE,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
name: {name: 'name', type: 'string', isIndexed: true},
|
|
permissions: {name: 'permissions', type: 'string'},
|
|
},
|
|
columnArray: [
|
|
{name: 'name', type: 'string', isIndexed: true},
|
|
{name: 'permissions', type: 'string'},
|
|
],
|
|
},
|
|
[SCHEDULED_POST]: {
|
|
name: SCHEDULED_POST,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
channel_id: {name: 'channel_id', type: 'string', isIndexed: true},
|
|
message: {name: 'message', type: 'string'},
|
|
files: {name: 'files', type: 'string'},
|
|
root_id: {name: 'root_id', type: 'string', isIndexed: true},
|
|
metadata: {name: 'metadata', type: 'string', isOptional: true},
|
|
create_at: {name: 'create_at', type: 'number'},
|
|
update_at: {name: 'update_at', type: 'number'},
|
|
scheduled_at: {name: 'scheduled_at', type: 'number'},
|
|
processed_at: {name: 'processed_at', type: 'number'},
|
|
error_code: {name: 'error_code', type: 'string'},
|
|
type: {name: 'type', type: 'string', isOptional: true},
|
|
},
|
|
columnArray: [
|
|
{name: 'channel_id', type: 'string', isIndexed: true},
|
|
{name: 'files', type: 'string'},
|
|
{name: 'message', type: 'string'},
|
|
{name: 'root_id', type: 'string', isIndexed: true},
|
|
{name: 'metadata', type: 'string', isOptional: true},
|
|
{name: 'create_at', type: 'number'},
|
|
{name: 'update_at', type: 'number'},
|
|
{name: 'scheduled_at', type: 'number'},
|
|
{name: 'processed_at', type: 'number'},
|
|
{name: 'error_code', type: 'string'},
|
|
{name: 'type', type: 'string', isOptional: true},
|
|
],
|
|
},
|
|
[SYSTEM]: {
|
|
name: SYSTEM,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
value: {name: 'value', type: 'string'},
|
|
},
|
|
columnArray: [
|
|
{name: 'value', type: 'string'},
|
|
],
|
|
},
|
|
[TEAM]: {
|
|
name: TEAM,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
allowed_domains: {name: 'allowed_domains', type: 'string'},
|
|
description: {name: 'description', type: 'string'},
|
|
display_name: {name: 'display_name', type: 'string'},
|
|
is_allow_open_invite: {
|
|
name: 'is_allow_open_invite',
|
|
type: 'boolean',
|
|
},
|
|
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'},
|
|
update_at: {name: 'update_at', type: 'number'},
|
|
invite_id: {name: 'invite_id', type: 'string'},
|
|
},
|
|
columnArray: [
|
|
{name: 'allowed_domains', type: 'string'},
|
|
{name: 'description', type: 'string'},
|
|
{name: 'display_name', type: 'string'},
|
|
{name: 'is_allow_open_invite', type: 'boolean'},
|
|
{name: 'is_group_constrained', type: 'boolean'},
|
|
{name: 'last_team_icon_updated_at', type: 'number'},
|
|
{name: 'name', type: 'string'},
|
|
{name: 'type', type: 'string'},
|
|
{name: 'update_at', type: 'number'},
|
|
{name: 'invite_id', type: 'string'},
|
|
],
|
|
},
|
|
[TEAM_CHANNEL_HISTORY]: {
|
|
name: TEAM_CHANNEL_HISTORY,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
channel_ids: {name: 'channel_ids', type: 'string'},
|
|
},
|
|
columnArray: [
|
|
{name: 'channel_ids', type: 'string'},
|
|
],
|
|
},
|
|
[TEAM_MEMBERSHIP]: {
|
|
name: TEAM_MEMBERSHIP,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
team_id: {name: 'team_id', type: 'string', isIndexed: true},
|
|
user_id: {name: 'user_id', type: 'string', isIndexed: true},
|
|
scheme_admin: {name: 'scheme_admin', type: 'boolean'},
|
|
},
|
|
columnArray: [
|
|
{name: 'team_id', type: 'string', isIndexed: true},
|
|
{name: 'user_id', type: 'string', isIndexed: true},
|
|
{name: 'scheme_admin', type: 'boolean'},
|
|
],
|
|
},
|
|
[TEAM_SEARCH_HISTORY]: {
|
|
name: TEAM_SEARCH_HISTORY,
|
|
unsafeSql: undefined,
|
|
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'},
|
|
],
|
|
},
|
|
[THREAD]: {
|
|
name: THREAD,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
is_following: {name: 'is_following', type: 'boolean'},
|
|
last_reply_at: {name: 'last_reply_at', type: 'number'},
|
|
last_viewed_at: {name: 'last_viewed_at', type: 'number'},
|
|
reply_count: {name: 'reply_count', type: 'number'},
|
|
unread_mentions: {name: 'unread_mentions', type: 'number'},
|
|
unread_replies: {name: 'unread_replies', type: 'number'},
|
|
viewed_at: {name: 'viewed_at', type: 'number'},
|
|
last_fetched_at: {name: 'last_fetched_at', type: 'number', isIndexed: true},
|
|
},
|
|
columnArray: [
|
|
{name: 'is_following', type: 'boolean'},
|
|
{name: 'last_reply_at', type: 'number'},
|
|
{name: 'last_viewed_at', type: 'number'},
|
|
{name: 'reply_count', type: 'number'},
|
|
{name: 'unread_mentions', type: 'number'},
|
|
{name: 'unread_replies', type: 'number'},
|
|
{name: 'viewed_at', type: 'number'},
|
|
{name: 'last_fetched_at', type: 'number', isIndexed: true},
|
|
],
|
|
},
|
|
[THREAD_PARTICIPANT]: {
|
|
name: THREAD_PARTICIPANT,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
thread_id: {name: 'thread_id', type: 'string', isIndexed: true},
|
|
user_id: {name: 'user_id', type: 'string', isIndexed: true},
|
|
},
|
|
columnArray: [
|
|
{name: 'thread_id', type: 'string', isIndexed: true},
|
|
{name: 'user_id', type: 'string', isIndexed: true},
|
|
],
|
|
},
|
|
[THREADS_IN_TEAM]: {
|
|
name: THREADS_IN_TEAM,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
team_id: {name: 'team_id', type: 'string', isIndexed: true},
|
|
thread_id: {name: 'thread_id', type: 'string', isIndexed: true},
|
|
},
|
|
columnArray: [
|
|
{name: 'team_id', type: 'string', isIndexed: true},
|
|
{name: 'thread_id', type: 'string', isIndexed: true},
|
|
],
|
|
},
|
|
[TEAM_THREADS_SYNC]: {
|
|
name: TEAM_THREADS_SYNC,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
earliest: {name: 'earliest', type: 'number'},
|
|
latest: {name: 'latest', type: 'number'},
|
|
},
|
|
columnArray: [
|
|
{name: 'earliest', type: 'number'},
|
|
{name: 'latest', type: 'number'},
|
|
],
|
|
},
|
|
[USER]: {
|
|
name: USER,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
auth_service: {name: 'auth_service', type: 'string'},
|
|
delete_at: {name: 'delete_at', type: 'number'},
|
|
email: {name: 'email', type: 'string'},
|
|
first_name: {name: 'first_name', type: 'string'},
|
|
is_bot: {name: 'is_bot', type: 'boolean'},
|
|
is_guest: {name: 'is_guest', type: 'boolean'},
|
|
last_name: {name: 'last_name', type: 'string'},
|
|
last_picture_update: {name: 'last_picture_update', type: 'number'},
|
|
locale: {name: 'locale', type: 'string'},
|
|
nickname: {name: 'nickname', type: 'string'},
|
|
notify_props: {name: 'notify_props', type: 'string'},
|
|
position: {name: 'position', type: 'string'},
|
|
props: {name: 'props', type: 'string'},
|
|
remote_id: {name: 'remote_id', type: 'string', isOptional: true},
|
|
roles: {name: 'roles', type: 'string'},
|
|
status: {name: 'status', type: 'string'},
|
|
timezone: {name: 'timezone', type: 'string'},
|
|
update_at: {name: 'update_at', type: 'number'},
|
|
username: {name: 'username', type: 'string'},
|
|
terms_of_service_create_at: {name: 'terms_of_service_create_at', type: 'number'},
|
|
terms_of_service_id: {name: 'terms_of_service_id', type: 'string'},
|
|
|
|
},
|
|
columnArray: [
|
|
{name: 'auth_service', type: 'string'},
|
|
{name: 'delete_at', type: 'number'},
|
|
{name: 'email', type: 'string'},
|
|
{name: 'first_name', type: 'string'},
|
|
{name: 'is_bot', type: 'boolean'},
|
|
{name: 'is_guest', type: 'boolean'},
|
|
{name: 'last_name', type: 'string'},
|
|
{name: 'last_picture_update', type: 'number'},
|
|
{name: 'locale', type: 'string'},
|
|
{name: 'nickname', type: 'string'},
|
|
{name: 'notify_props', type: 'string'},
|
|
{name: 'position', type: 'string'},
|
|
{name: 'props', type: 'string'},
|
|
{name: 'remote_id', type: 'string', isOptional: true},
|
|
{name: 'roles', type: 'string'},
|
|
{name: 'status', type: 'string'},
|
|
{name: 'timezone', type: 'string'},
|
|
{name: 'update_at', type: 'number'},
|
|
{name: 'username', type: 'string'},
|
|
{name: 'terms_of_service_id', type: 'string'},
|
|
{name: 'terms_of_service_create_at', type: 'number'},
|
|
],
|
|
},
|
|
[BOARD_VIEW]: {
|
|
name: BOARD_VIEW,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
channel_id: {name: 'channel_id', type: 'string', isIndexed: true},
|
|
type: {name: 'type', type: 'string'},
|
|
creator_id: {name: 'creator_id', type: 'string'},
|
|
title: {name: 'title', type: 'string'},
|
|
description: {name: 'description', type: 'string', isOptional: true},
|
|
sort_order: {name: 'sort_order', type: 'number'},
|
|
props: {name: 'props', type: 'string', isOptional: true},
|
|
create_at: {name: 'create_at', type: 'number'},
|
|
update_at: {name: 'update_at', type: 'number', isIndexed: true},
|
|
delete_at: {name: 'delete_at', type: 'number'},
|
|
},
|
|
columnArray: [
|
|
{name: 'channel_id', type: 'string', isIndexed: true},
|
|
{name: 'type', type: 'string'},
|
|
{name: 'creator_id', type: 'string'},
|
|
{name: 'title', type: 'string'},
|
|
{name: 'description', type: 'string', isOptional: true},
|
|
{name: 'sort_order', type: 'number'},
|
|
{name: 'props', type: 'string', isOptional: true},
|
|
{name: 'create_at', type: 'number'},
|
|
{name: 'update_at', type: 'number', isIndexed: true},
|
|
{name: 'delete_at', type: 'number'},
|
|
],
|
|
},
|
|
[PROPERTY_FIELD]: {
|
|
name: PROPERTY_FIELD,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
group_id: {name: 'group_id', type: 'string'},
|
|
name: {name: 'name', type: 'string'},
|
|
type: {name: 'type', type: 'string'},
|
|
attrs: {name: 'attrs', type: 'string', isOptional: true},
|
|
object_type: {name: 'object_type', type: 'string'},
|
|
target_id: {name: 'target_id', type: 'string', isIndexed: true},
|
|
target_type: {name: 'target_type', type: 'string'},
|
|
protected: {name: 'protected', type: 'boolean'},
|
|
permission_field: {name: 'permission_field', type: 'string', isOptional: true},
|
|
permission_values: {name: 'permission_values', type: 'string', isOptional: true},
|
|
permission_options: {name: 'permission_options', type: 'string', isOptional: true},
|
|
create_at: {name: 'create_at', type: 'number'},
|
|
update_at: {name: 'update_at', type: 'number', isIndexed: true},
|
|
delete_at: {name: 'delete_at', type: 'number'},
|
|
created_by: {name: 'created_by', type: 'string'},
|
|
updated_by: {name: 'updated_by', type: 'string'},
|
|
},
|
|
columnArray: [
|
|
{name: 'group_id', type: 'string'},
|
|
{name: 'name', type: 'string'},
|
|
{name: 'type', type: 'string'},
|
|
{name: 'attrs', type: 'string', isOptional: true},
|
|
{name: 'object_type', type: 'string'},
|
|
{name: 'target_id', type: 'string', isIndexed: true},
|
|
{name: 'target_type', type: 'string'},
|
|
{name: 'protected', type: 'boolean'},
|
|
{name: 'permission_field', type: 'string', isOptional: true},
|
|
{name: 'permission_values', type: 'string', isOptional: true},
|
|
{name: 'permission_options', type: 'string', isOptional: true},
|
|
{name: 'create_at', type: 'number'},
|
|
{name: 'update_at', type: 'number', isIndexed: true},
|
|
{name: 'delete_at', type: 'number'},
|
|
{name: 'created_by', type: 'string'},
|
|
{name: 'updated_by', type: 'string'},
|
|
],
|
|
},
|
|
[PROPERTY_VALUE]: {
|
|
name: PROPERTY_VALUE,
|
|
unsafeSql: undefined,
|
|
columns: {
|
|
field_id: {name: 'field_id', type: 'string', isIndexed: true},
|
|
target_id: {name: 'target_id', type: 'string', isIndexed: true},
|
|
target_type: {name: 'target_type', type: 'string'},
|
|
group_id: {name: 'group_id', type: 'string'},
|
|
value: {name: 'value', type: 'string'},
|
|
create_at: {name: 'create_at', type: 'number'},
|
|
update_at: {name: 'update_at', type: 'number'},
|
|
delete_at: {name: 'delete_at', type: 'number'},
|
|
created_by: {name: 'created_by', type: 'string'},
|
|
updated_by: {name: 'updated_by', type: 'string'},
|
|
},
|
|
columnArray: [
|
|
{name: 'field_id', type: 'string', isIndexed: true},
|
|
{name: 'target_id', type: 'string', isIndexed: true},
|
|
{name: 'target_type', type: 'string'},
|
|
{name: 'group_id', type: 'string'},
|
|
{name: 'value', type: 'string'},
|
|
{name: 'create_at', type: 'number'},
|
|
{name: 'update_at', type: 'number'},
|
|
{name: 'delete_at', type: 'number'},
|
|
{name: 'created_by', type: 'string'},
|
|
{name: 'updated_by', type: 'string'},
|
|
],
|
|
},
|
|
},
|
|
});
|
|
});
|
|
});
|