diff --git a/app/database/migration/server/index.ts b/app/database/migration/server/index.ts index 42ed18da3..1669518a5 100644 --- a/app/database/migration/server/index.ts +++ b/app/database/migration/server/index.ts @@ -25,6 +25,23 @@ const { const {PLAYBOOK_RUN, PLAYBOOK_CHECKLIST, PLAYBOOK_CHECKLIST_ITEM, PLAYBOOK_RUN_ATTRIBUTE, PLAYBOOK_RUN_ATTRIBUTE_VALUE} = PLAYBOOK_TABLES; export default schemaMigrations({migrations: [ + { + toVersion: 16, + steps: [ + addColumns({ + table: SCHEDULED_POST, + columns: [ + {name: 'type', type: 'string', isOptional: true}, + ], + }), + addColumns({ + table: DRAFT, + columns: [ + {name: 'type', type: 'string', isOptional: true}, + ], + }), + ], + }, { toVersion: 15, steps: [ diff --git a/app/database/models/server/draft.ts b/app/database/models/server/draft.ts index eca3b7981..e6b142a1a 100644 --- a/app/database/models/server/draft.ts +++ b/app/database/models/server/draft.ts @@ -44,4 +44,7 @@ export default class DraftModel extends Model implements DraftModelInterface { /** update_at : The timestamp to when this post was last updated on the server */ @field('update_at') updateAt!: number; + + /** type : The type of post */ + @field('type') type!: PostTypesUserCreatable | null; } diff --git a/app/database/models/server/scheduled_post.ts b/app/database/models/server/scheduled_post.ts index 99b59b6fc..bfd6e7b97 100644 --- a/app/database/models/server/scheduled_post.ts +++ b/app/database/models/server/scheduled_post.ts @@ -57,6 +57,9 @@ export default class ScheduledPostModel extends Model implements ScheduledPostMo /** error_code : The reason message if the schedule post failed */ @field('error_code') errorCode!: string; + /** type : The type of the post being scheduled */ + @field('type') type!: PostTypesUserCreatable | null; + toApi = (user_id: string) => { const scheduledPost: ScheduledPost = { id: this.id, diff --git a/app/database/operator/server_data_operator/transformers/post.ts b/app/database/operator/server_data_operator/transformers/post.ts index 5eaf5ba9a..f731889c4 100644 --- a/app/database/operator/server_data_operator/transformers/post.ts +++ b/app/database/operator/server_data_operator/transformers/post.ts @@ -192,6 +192,7 @@ export const transformSchedulePostsRecord = ({action, database, value}: Transfor scheduledPost.scheduledAt = raw.scheduled_at; scheduledPost.processedAt = raw.processed_at ?? 0; scheduledPost.errorCode = raw.error_code || scheduledPost.errorCode; + scheduledPost.type = raw.type || ''; }; return prepareBaseRecord({ diff --git a/app/database/schema/server/index.ts b/app/database/schema/server/index.ts index 48f1ac486..0a5f8e4db 100644 --- a/app/database/schema/server/index.ts +++ b/app/database/schema/server/index.ts @@ -45,7 +45,7 @@ import { } from './table_schemas'; export const serverSchema: AppSchema = appSchema({ - version: 15, + version: 16, tables: [ CategorySchema, CategoryChannelSchema, diff --git a/app/database/schema/server/table_schemas/draft.ts b/app/database/schema/server/table_schemas/draft.ts index e0736ad81..231f2eec7 100644 --- a/app/database/schema/server/table_schemas/draft.ts +++ b/app/database/schema/server/table_schemas/draft.ts @@ -16,5 +16,6 @@ export default tableSchema({ {name: 'root_id', type: 'string', isIndexed: true}, {name: 'metadata', type: 'string', isOptional: true}, {name: 'update_at', type: 'number'}, + {name: 'type', type: 'string', isOptional: true}, ], }); diff --git a/app/database/schema/server/table_schemas/scheduled_post.ts b/app/database/schema/server/table_schemas/scheduled_post.ts index e332543d7..5ab306cb4 100644 --- a/app/database/schema/server/table_schemas/scheduled_post.ts +++ b/app/database/schema/server/table_schemas/scheduled_post.ts @@ -20,5 +20,6 @@ export default tableSchema({ {name: 'scheduled_at', type: 'number'}, {name: 'processed_at', type: 'number'}, {name: 'error_code', type: 'string'}, + {name: 'type', type: 'string', isOptional: true}, ], }); diff --git a/app/database/schema/server/test.ts b/app/database/schema/server/test.ts index 33f0052d8..a3a3b8a66 100644 --- a/app/database/schema/server/test.ts +++ b/app/database/schema/server/test.ts @@ -52,7 +52,7 @@ const {PLAYBOOK_RUN, PLAYBOOK_CHECKLIST, PLAYBOOK_CHECKLIST_ITEM, PLAYBOOK_RUN_A describe('*** Test schema for SERVER database ***', () => { it('=> The SERVER SCHEMA should strictly match', () => { expect(serverSchema).toEqual({ - version: 15, + version: 16, unsafeSql: undefined, tables: { [CATEGORY]: { @@ -317,6 +317,7 @@ describe('*** Test schema for SERVER database ***', () => { 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}, @@ -325,6 +326,7 @@ describe('*** Test schema for SERVER database ***', () => { {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]: { @@ -717,6 +719,7 @@ describe('*** Test schema for SERVER database ***', () => { 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}, @@ -729,6 +732,7 @@ describe('*** Test schema for SERVER database ***', () => { {name: 'scheduled_at', type: 'number'}, {name: 'processed_at', type: 'number'}, {name: 'error_code', type: 'string'}, + {name: 'type', type: 'string', isOptional: true}, ], }, [SYSTEM]: { diff --git a/docs/database/server/server.md b/docs/database/server/server.md index 75a1367d3..33a8a32be 100644 --- a/docs/database/server/server.md +++ b/docs/database/server/server.md @@ -95,6 +95,23 @@ channel_id string INDEX FK >- Channel.id files string #stringify (array) message string root_id string INDEX NULL FK >- Post.id +type string NULL + + +ScheduledPost +- +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 +metadata string NULL +create_at number +update_at number +scheduled_at number +processed_at number NULL +error_code string +type string NULL File diff --git a/test/test_helper.ts b/test/test_helper.ts index d55138fd7..a6bb7a855 100644 --- a/test/test_helper.ts +++ b/test/test_helper.ts @@ -652,6 +652,7 @@ class TestHelperSingleton { files: [], metadata: {}, updateAt: 0, + type: '', ...overwrite, }; }; @@ -880,6 +881,7 @@ class TestHelperSingleton { scheduledAt: 0, processedAt: 0, errorCode: '', + type: '', toApi: jest.fn(), ...overwrite, }; diff --git a/types/api/posts.d.ts b/types/api/posts.d.ts index a7c5ef336..53474f35a 100644 --- a/types/api/posts.d.ts +++ b/types/api/posts.d.ts @@ -1,8 +1,11 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -type PostType = +type PostTypesUserCreatable = | '' + | 'burn_on_read'; + +type PostType = PostTypesUserCreatable | 'system_add_remove' | 'system_add_to_channel' | 'system_add_to_team' @@ -30,8 +33,7 @@ type PostType = | 'custom_calls_recording' | 'custom_run_update' | 'custom_llmbot' - | 'custom_llm_postback' - | 'burn_on_read'; + | 'custom_llm_postback'; type PostEmbedType = 'image' | 'message_attachment' | 'opengraph' | 'permalink'; diff --git a/types/database/models/servers/draft.ts b/types/database/models/servers/draft.ts index 3115645b5..8bbd19082 100644 --- a/types/database/models/servers/draft.ts +++ b/types/database/models/servers/draft.ts @@ -30,6 +30,9 @@ declare class DraftModel extends Model { /** update_at : The timestamp to when this post was last updated on the server */ updateAt: number; + + /** type : The post type of draft */ + type: string | null; } export default DraftModel; diff --git a/types/database/models/servers/scheduled_post.ts b/types/database/models/servers/scheduled_post.ts index 8c8954c54..2c1f2f3e0 100644 --- a/types/database/models/servers/scheduled_post.ts +++ b/types/database/models/servers/scheduled_post.ts @@ -43,6 +43,9 @@ declare class ScheduledPostModel extends Model { /** error_code : The reason message if the schedule post failed */ errorCode: string; + /** type : The post type of draft */ + type: string | null; + toApi: (user_id: string) => ScheduledPost; } diff --git a/types/database/raw_values.d.ts b/types/database/raw_values.d.ts index 6be8b5e28..1fa71e98f 100644 --- a/types/database/raw_values.d.ts +++ b/types/database/raw_values.d.ts @@ -24,6 +24,7 @@ type Draft = { root_id: string; metadata?: PostMetadata; update_at: number; + type?: string; }; type MyTeam = {