From 079f46c0db1a97c863106cffbd0ee480811a4436 Mon Sep 17 00:00:00 2001 From: sjaanus Date: Thu, 27 Oct 2022 13:26:21 +0300 Subject: [PATCH] Make domain type and schema match --- src/lib/db/suggest-change-store.ts | 59 ++++++++++--------- src/lib/types/model.ts | 6 +- src/lib/types/stores/suggest-change-store.ts | 1 + .../fixtures/fake-suggest-change-store.ts | 12 +++- 4 files changed, 47 insertions(+), 31 deletions(-) diff --git a/src/lib/db/suggest-change-store.ts b/src/lib/db/suggest-change-store.ts index 4553ab2b49..381c30a3d3 100644 --- a/src/lib/db/suggest-change-store.ts +++ b/src/lib/db/suggest-change-store.ts @@ -15,29 +15,29 @@ const T = { SUGGEST_CHANGE_SET: 'suggest_change_set', }; -interface ISuggestChangesetInsert { +interface ISuggestChangesetRow { id: number; + state: SuggestChangesetState; environment: string; - state?: string; - project?: string; - created_by?: number; - created_at?: Date; + project: string; + created_at: Date; + created_by: number; + changeSetUsername: string; + changeSetAvatar: string; + changeId: number; + changeFeature: string; + changeAction: SuggestChangeAction; + changePayload: any; + changeCreatedAt: Date; + changeCreatedBy: number; + changeCreatedByUsername: string; + changeCreatedByAvatar: string; } -interface ISuggestChangeInsert { - id: number; - action: SuggestChangeAction; - feature: string; - payload?: unknown; - created_by?: number; - created_at?: Date; -} - -interface ISuggestChangesetRow extends ISuggestChangesetInsert { - changes?: ISuggestChange[]; -} - -const suggestChangeRowReducer = (acc, suggestChangeRow) => { +const suggestChangeRowReducer = ( + acc: Record, + suggestChangeRow: ISuggestChangesetRow, +): Record => { const { changeId, changeAction, @@ -199,7 +199,7 @@ export class SuggestChangeStore implements ISuggestChangeStore { userId: number, ): Promise => { const [{ id }] = await this.db(T.SUGGEST_CHANGE_SET) - .insert({ + .insert({ environment: suggestChangeSet.environment, state: suggestChangeSet.state, project: suggestChangeSet.project, @@ -207,22 +207,25 @@ export class SuggestChangeStore implements ISuggestChangeStore { }) .returning('id'); - suggestChangeSet.changes.forEach((change) => { - this.addChangeToSet(change, id, userId); + suggestChangeSet.features.forEach((feature) => { + feature.changes.forEach((change) => { + this.addChangeToSet(change, feature.name, id, userId); + }); }); return this.get(id); }; addChangeToSet = async ( - change: PartialSome, + change: ISuggestChange, + feature: string, changeSetID: number, userId: number, ): Promise => { await this.db(T.SUGGEST_CHANGE) - .insert({ + .insert({ action: change.action, - feature: change.feature, + feature: feature, payload: change.payload, suggest_change_set_id: changeSetID, created_by: userId, @@ -247,8 +250,10 @@ export class SuggestChangeStore implements ISuggestChangeStore { return result.rows[0].present; }; - mapRows = (rows?: any[]): ISuggestChangeset[] => { - const suggestChangeSets = rows.reduce(suggestChangeRowReducer, {}); + mapRows = (rows?: ISuggestChangesetRow[]): ISuggestChangeset[] => { + const suggestChangeSets = rows.reduce< + Record + >(suggestChangeRowReducer, {}); return Object.values(suggestChangeSets); }; diff --git a/src/lib/types/model.ts b/src/lib/types/model.ts index 606685f51c..44de43849a 100644 --- a/src/lib/types/model.ts +++ b/src/lib/types/model.ts @@ -373,13 +373,17 @@ export interface ISuggestChangeset { environment: string; createdBy: Pick; createdAt: Date; + features: ISuggestChangeFeature[]; +} + +export interface ISuggestChangeFeature { + name: string; changes: ISuggestChange[]; } export interface ISuggestChange { id?: number; action: SuggestChangeAction; - feature: string; payload: any; createdBy?: Pick; createdAt?: Date; diff --git a/src/lib/types/stores/suggest-change-store.ts b/src/lib/types/stores/suggest-change-store.ts index 025bfa131c..2f83dda557 100644 --- a/src/lib/types/stores/suggest-change-store.ts +++ b/src/lib/types/stores/suggest-change-store.ts @@ -17,6 +17,7 @@ export interface ISuggestChangeStore extends Store { addChangeToSet( change: PartialSome, + feature: string, changeSetID: number, userId: number, ): Promise; diff --git a/src/test/fixtures/fake-suggest-change-store.ts b/src/test/fixtures/fake-suggest-change-store.ts index 8a348dddbe..3579425a12 100644 --- a/src/test/fixtures/fake-suggest-change-store.ts +++ b/src/test/fixtures/fake-suggest-change-store.ts @@ -25,13 +25,19 @@ export default class FakeSuggestChangeStore implements ISuggestChangeStore { addChangeToSet( change: PartialSome, + feature: string, changeSetID: number, userId: number, ): Promise { const changeSet = this.suggestChanges.find((s) => s.id === changeSetID); - changeSet.changes.push({ - createdBy: { id: userId, username: '', imageUrl: '' }, - ...change, + changeSet.features.push({ + name: feature, + changes: [ + { + createdBy: { id: userId, username: '', imageUrl: '' }, + ...change, + }, + ], }); return Promise.resolve(); }