From de2c240bc763904738e454f071697bba110ad064 Mon Sep 17 00:00:00 2001 From: Shaz MJ Date: Fri, 15 Jul 2022 17:01:54 +1000 Subject: [PATCH] [Gekidou] [Migration] Adds member_count to groups table (#6468) * Adds member_count to groups table * Newline --- app/database/migration/server/index.ts | 12 ++++++++++++ app/database/models/server/group.ts | 3 +++ .../server_data_operator/transformers/group.test.ts | 1 + .../server_data_operator/transformers/group.ts | 1 + app/database/schema/server/index.ts | 2 +- app/database/schema/server/table_schemas/group.ts | 1 + app/database/schema/server/test.ts | 4 +++- types/api/groups.d.ts | 2 +- types/database/models/servers/group.d.ts | 3 +++ 9 files changed, 26 insertions(+), 3 deletions(-) diff --git a/app/database/migration/server/index.ts b/app/database/migration/server/index.ts index 98fe552348..11f715c9d4 100644 --- a/app/database/migration/server/index.ts +++ b/app/database/migration/server/index.ts @@ -9,11 +9,23 @@ import {schemaMigrations, addColumns} from '@nozbe/watermelondb/Schema/migration import {MM_TABLES} from '@constants/database'; const {SERVER: { + GROUP, MY_CHANNEL, THREAD, }} = MM_TABLES; export default schemaMigrations({migrations: [ + { + toVersion: 3, + steps: [ + addColumns({ + table: GROUP, + columns: [ + {name: 'member_count', type: 'number'}, + ], + }), + ], + }, { toVersion: 2, steps: [ diff --git a/app/database/models/server/group.ts b/app/database/models/server/group.ts index c4add5c460..9ae7b2d293 100644 --- a/app/database/models/server/group.ts +++ b/app/database/models/server/group.ts @@ -57,6 +57,9 @@ export default class GroupModel extends Model implements GroupInterface { /** remote_id : The remote id for the group (i.e. in a shared channel) */ @field('remote_id') remoteId!: string; + /** member_count : The number of members in the group */ + @field('member_count') memberCount!: number; + /** created_at : The creation date for this row */ @field('created_at') createdAt!: number; diff --git a/app/database/operator/server_data_operator/transformers/group.test.ts b/app/database/operator/server_data_operator/transformers/group.test.ts index 50fe504b67..4d75f850ba 100644 --- a/app/database/operator/server_data_operator/transformers/group.test.ts +++ b/app/database/operator/server_data_operator/transformers/group.test.ts @@ -23,6 +23,7 @@ describe('*** GROUP Prepare Records Test ***', () => { name: 'recent', source: 'custom', remote_id: 'custom', + member_count: 10, } as Group, }, }); diff --git a/app/database/operator/server_data_operator/transformers/group.ts b/app/database/operator/server_data_operator/transformers/group.ts index 5d796c9248..60a137c1b3 100644 --- a/app/database/operator/server_data_operator/transformers/group.ts +++ b/app/database/operator/server_data_operator/transformers/group.ts @@ -35,6 +35,7 @@ export const transformGroupRecord = ({action, database, value}: TransformerArgs) group.displayName = raw.display_name; group.source = raw.source; group.remoteId = raw.remote_id; + group.memberCount = raw.member_count || 0; }; return prepareBaseRecord({ diff --git a/app/database/schema/server/index.ts b/app/database/schema/server/index.ts index 58fb339ac2..48c9a8d5af 100644 --- a/app/database/schema/server/index.ts +++ b/app/database/schema/server/index.ts @@ -37,7 +37,7 @@ import { } from './table_schemas'; export const serverSchema: AppSchema = appSchema({ - version: 2, + version: 3, tables: [ CategorySchema, CategoryChannelSchema, diff --git a/app/database/schema/server/table_schemas/group.ts b/app/database/schema/server/table_schemas/group.ts index ffc1c484b8..f5c4147736 100644 --- a/app/database/schema/server/table_schemas/group.ts +++ b/app/database/schema/server/table_schemas/group.ts @@ -18,5 +18,6 @@ export default tableSchema({ {name: 'created_at', type: 'number'}, {name: 'updated_at', type: 'number'}, {name: 'deleted_at', type: 'number'}, + {name: 'member_count', type: 'number'}, ], }); diff --git a/app/database/schema/server/test.ts b/app/database/schema/server/test.ts index d27cffe726..0b6fd6e29b 100644 --- a/app/database/schema/server/test.ts +++ b/app/database/schema/server/test.ts @@ -43,7 +43,7 @@ const { describe('*** Test schema for SERVER database ***', () => { it('=> The SERVER SCHEMA should strictly match', () => { expect(serverSchema).toEqual({ - version: 2, + version: 3, tables: { [CATEGORY]: { name: CATEGORY, @@ -257,6 +257,7 @@ describe('*** Test schema for SERVER database ***', () => { 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'}, @@ -267,6 +268,7 @@ describe('*** Test schema for SERVER database ***', () => { {name: 'created_at', type: 'number'}, {name: 'updated_at', type: 'number'}, {name: 'deleted_at', type: 'number'}, + {name: 'member_count', type: 'number'}, ], }, [GROUP_CHANNEL]: { diff --git a/types/api/groups.d.ts b/types/api/groups.d.ts index 2fd4c2e7d3..152c7ea7ba 100644 --- a/types/api/groups.d.ts +++ b/types/api/groups.d.ts @@ -8,7 +8,7 @@ type Group = { description: string; source: string; remote_id: string; - member_count: number; + member_count?: number; allow_reference: boolean; create_at: number; update_at: number; diff --git a/types/database/models/servers/group.d.ts b/types/database/models/servers/group.d.ts index 2662262ca8..fb9dc48448 100644 --- a/types/database/models/servers/group.d.ts +++ b/types/database/models/servers/group.d.ts @@ -43,6 +43,9 @@ export default class GroupModel extends Model { /** deleted_at : The timestamp for when it was deleted */ deletedAt: number; + /** member_count : The number of members in the group */ + memberCount: number; + /** channels : All the channels associated with this group */ @lazy channels: Query;