From 6018dae6b92092d1d059a6bb915d1b744bab660e Mon Sep 17 00:00:00 2001 From: Kevin Berry <41717340+51ngul4r1ty@users.noreply.github.com> Date: Thu, 25 Jan 2024 08:55:04 -0500 Subject: [PATCH 1/2] add backlog item notes field --- docs/dataModel/DATA_CATALOG.md | 3 +++ .../organisms/combo/BacklogItemPlanningItem.tsx | 1 + .../organisms/forms/BacklogItemDetailForm.tsx | 2 ++ .../organisms/forms/BacklogItemFullDetailForm.tsx | 15 +++++++++++++++ .../organisms/forms/backlogItemFormTypes.ts | 1 + .../__tests__/ProductPlanningPanel.test.tsx | 1 + packages/shared/src/mappers/backlogItemMappers.ts | 2 ++ .../__tests__/backlogItemsReducerHelper.test.ts | 4 ++++ .../__tests__/sprintBacklogReducer.test.ts | 1 + .../reducers/backlogItems/backlogItemsReducer.ts | 2 ++ .../backlogItems/backlogItemsReducerHelper.ts | 2 ++ .../shared/src/selectors/backlogItemSelectors.ts | 5 +++++ packages/shared/src/types/apiModelTypes.ts | 2 ++ packages/shared/src/types/backlogItemTypes.ts | 1 + packages/shared/src/utils/apiPayloadHelper.ts | 1 + packages/shared/src/utils/businessItemCloners.ts | 1 + packages/shared/src/views/BacklogItemView.tsx | 2 ++ .../shared/src/views/BacklogItemViewContainer.ts | 1 + .../shared/stories/organisms/index.stories.tsx | 1 + packages/web-app/package.json | 2 +- .../web-app/src/database/erd/dbdiagram-io.txt | 1 + packages/web-app/src/database/model/upgrade.sql | 3 +++ .../api/utils/__tests__/statusChangeUtils.test.ts | 1 + .../__tests__/apiToDataAccessMappers.test.ts | 2 ++ .../__tests__/dataAccessToApiMappers.test.ts | 2 ++ .../dataaccess/mappers/dataAccessToApiMappers.ts | 2 ++ .../dataaccess/models/BacklogItemDataModel.ts | 5 +++++ 27 files changed, 65 insertions(+), 1 deletion(-) diff --git a/docs/dataModel/DATA_CATALOG.md b/docs/dataModel/DATA_CATALOG.md index 8330fb3..dff34ec 100644 --- a/docs/dataModel/DATA_CATALOG.md +++ b/docs/dataModel/DATA_CATALOG.md @@ -69,6 +69,9 @@ Fields for `backlogitem` * `acceptanceCriteria` - Markdown data that contains the acceptance criteria for a story or the repo steps of an issue. This is an optional field that will be populated with `null` if not provided. +* `notes` - Markdown data that contains the notes for a story or the repo steps + of an issue. This is an optional field that will be populated with `null` if + not provided. * `rolePhrase` - For example, `As a devops engineer` or `As a developer using VS Code`. * `storyPhrase` - For example, `I can deploy to Heroku` or `I can login`. diff --git a/packages/shared/src/components/organisms/combo/BacklogItemPlanningItem.tsx b/packages/shared/src/components/organisms/combo/BacklogItemPlanningItem.tsx index f2ae626..e45f272 100644 --- a/packages/shared/src/components/organisms/combo/BacklogItemPlanningItem.tsx +++ b/packages/shared/src/components/organisms/combo/BacklogItemPlanningItem.tsx @@ -69,6 +69,7 @@ const InternalBacklogItemPlanningItem: React.FC = reasonPhrase: this.props.reasonPhrase, type: this.props.type, acceptanceCriteria: this.props.acceptanceCriteria, + notes: this.props.notes, startedAt: this.props.startedAt, finishedAt: this.props.finishedAt, acceptedAt: this.props.acceptedAt, diff --git a/packages/shared/src/components/organisms/forms/BacklogItemFullDetailForm.tsx b/packages/shared/src/components/organisms/forms/BacklogItemFullDetailForm.tsx index b01d055..4b353f2 100644 --- a/packages/shared/src/components/organisms/forms/BacklogItemFullDetailForm.tsx +++ b/packages/shared/src/components/organisms/forms/BacklogItemFullDetailForm.tsx @@ -81,6 +81,7 @@ export const BacklogItemFullDetailForm: React.FC const placeholderText = props.type === "issue" ? issuePlaceholder : storyPlaceholder; const prevData: BacklogItemEditableFields = { acceptanceCriteria: props.acceptanceCriteria, + notes: props.notes, estimate: props.estimate, externalId: props.externalId, friendlyId: props.friendlyId, @@ -184,6 +185,19 @@ export const BacklogItemFullDetailForm: React.FC }} /> ); + const notesInput = ( + { + handleDataUpdate({ ...prevData, notes: value }); + }} + /> + ); const dateStartedInput = ( {dateReleasedInput}
{acceptanceCriteriaInput}
+
{notesInput}
{actionButtonPanelElts} ); diff --git a/packages/shared/src/components/organisms/forms/backlogItemFormTypes.ts b/packages/shared/src/components/organisms/forms/backlogItemFormTypes.ts index 9be14ca..d90b92f 100644 --- a/packages/shared/src/components/organisms/forms/backlogItemFormTypes.ts +++ b/packages/shared/src/components/organisms/forms/backlogItemFormTypes.ts @@ -13,6 +13,7 @@ export interface BacklogItemEditableFields extends StoryPhrases { /* new in this interface */ acceptanceCriteria: string; + notes: string; acceptedAt: Date | null; estimate: number | null; externalId: string; diff --git a/packages/shared/src/components/organisms/panels/__tests__/ProductPlanningPanel.test.tsx b/packages/shared/src/components/organisms/panels/__tests__/ProductPlanningPanel.test.tsx index 2a239f0..4913193 100644 --- a/packages/shared/src/components/organisms/panels/__tests__/ProductPlanningPanel.test.tsx +++ b/packages/shared/src/components/organisms/panels/__tests__/ProductPlanningPanel.test.tsx @@ -99,6 +99,7 @@ const buildCommonItem = ( saved: boolean = true ): BacklogItemWithSource => ({ acceptanceCriteria: "", + notes: "", createdAt: timeNow(), estimate, externalId: buildExternalId(source, itemNumber), diff --git a/packages/shared/src/mappers/backlogItemMappers.ts b/packages/shared/src/mappers/backlogItemMappers.ts index 2fc9544..f469d7c 100644 --- a/packages/shared/src/mappers/backlogItemMappers.ts +++ b/packages/shared/src/mappers/backlogItemMappers.ts @@ -9,6 +9,7 @@ import { mapApiStatusToBacklogItem, mapBacklogItemStatusToApi } from "./statusMa export const mapApiItemToBacklogItem = (apiItem: ApiBacklogItem): BacklogItem => ({ acceptanceCriteria: apiItem.acceptanceCriteria, + notes: apiItem.notes, acceptedAt: isoDateStringToDate(apiItem.acceptedAt), createdAt: isoDateStringToDate(apiItem.createdAt), estimate: apiItem.estimate, @@ -56,6 +57,7 @@ export const mapApiItemToBacklogItemInSprint = (apiItem: ApiBacklogItemInSprint) export const mapBacklogItemToApiItem = (item: BacklogItem): ApiBacklogItem => ({ acceptanceCriteria: item.acceptanceCriteria, + notes: item.notes, createdAt: dateToIsoDateString(item.createdAt), acceptedAt: dateToIsoDateString(item.acceptedAt), estimate: item.estimate, diff --git a/packages/shared/src/reducers/__tests__/backlogItemsReducerHelper.test.ts b/packages/shared/src/reducers/__tests__/backlogItemsReducerHelper.test.ts index 3790004..66df9e3 100644 --- a/packages/shared/src/reducers/__tests__/backlogItemsReducerHelper.test.ts +++ b/packages/shared/src/reducers/__tests__/backlogItemsReducerHelper.test.ts @@ -23,6 +23,7 @@ describe("Backlog Items Reducer", () => { it("should update correctly", () => { const addedItem: SaveableBacklogItem = { acceptanceCriteria: undefined, + notes: undefined, createdAt: undefined, estimate: undefined, externalId: undefined, @@ -54,6 +55,7 @@ describe("Backlog Items Reducer", () => { }; const item: BacklogItemWithSource = { acceptanceCriteria: "", + notes: "", createdAt: new Date("2020-05-16T17:49:30.265Z"), estimate: null, externalId: "t-1", @@ -82,6 +84,7 @@ describe("Backlog Items Reducer", () => { const pushedItem1: WebsocketPushNotificationData = { item: { acceptanceCriteria: "", + notes: "", createdAt: new Date("2020-06-02T01:15:54.715Z"), estimate: null, externalId: "t-2", @@ -111,6 +114,7 @@ describe("Backlog Items Reducer", () => { }; const pushedItem1InAllItems: BacklogItemWithSource = { acceptanceCriteria: "", + notes: "", createdAt: new Date("2020-06-02T01:15:54.715Z"), estimate: null, externalId: "t-2", diff --git a/packages/shared/src/reducers/__tests__/sprintBacklogReducer.test.ts b/packages/shared/src/reducers/__tests__/sprintBacklogReducer.test.ts index b6d635c..c93ef1f 100644 --- a/packages/shared/src/reducers/__tests__/sprintBacklogReducer.test.ts +++ b/packages/shared/src/reducers/__tests__/sprintBacklogReducer.test.ts @@ -225,6 +225,7 @@ describe("Sprint Backlog Reducer", () => { const backlogItem: BacklogItemInSprint = { id: backlogItemId, acceptanceCriteria: null, + notes: null, acceptedAt: null, createdAt: new Date(2020, 0, 1), estimate: null, diff --git a/packages/shared/src/reducers/backlogItems/backlogItemsReducer.ts b/packages/shared/src/reducers/backlogItems/backlogItemsReducer.ts index c4af63a..4d4ed1e 100644 --- a/packages/shared/src/reducers/backlogItems/backlogItemsReducer.ts +++ b/packages/shared/src/reducers/backlogItems/backlogItemsReducer.ts @@ -514,6 +514,7 @@ export const backlogItemsReducer = ( })); draft.currentItem = { acceptanceCriteria: backlogItem.acceptanceCriteria, + notes: backlogItem.notes, createdAt: isoDateStringToDate(backlogItem.createdAt), editing: false, estimate: backlogItem.estimate, @@ -547,6 +548,7 @@ export const backlogItemsReducer = ( draft.currentItem = resetItem; const item: BacklogItemInstanceEditableFields = { acceptanceCriteria: resetItem.acceptanceCriteria, + notes: resetItem.notes, estimate: resetItem.estimate, externalId: resetItem.externalId, friendlyId: resetItem.friendlyId, diff --git a/packages/shared/src/reducers/backlogItems/backlogItemsReducerHelper.ts b/packages/shared/src/reducers/backlogItems/backlogItemsReducerHelper.ts index b335d71..a58d1ac 100644 --- a/packages/shared/src/reducers/backlogItems/backlogItemsReducerHelper.ts +++ b/packages/shared/src/reducers/backlogItems/backlogItemsReducerHelper.ts @@ -49,6 +49,7 @@ export const addSourceToPushedItem = (item: Partial, sourc export const mapPushedToBacklogItem = (pushedItem: Partial): BacklogItemWithSource => ({ acceptanceCriteria: pushedItem.acceptanceCriteria, + notes: pushedItem.notes, acceptedAt: pushedItem.acceptedAt, createdAt: pushedItem.createdAt, estimate: pushedItem.estimate, @@ -161,6 +162,7 @@ export const updateItemFieldsInAllItems = (draft: Draft, back export const updateBacklogItemFields = (backlogItem: BacklogItem, payload: BacklogItemEditableFields) => { backlogItem.acceptanceCriteria = payload.acceptanceCriteria; + backlogItem.notes = payload.notes; backlogItem.estimate = payload.estimate; backlogItem.externalId = payload.externalId; backlogItem.friendlyId = payload.friendlyId; diff --git a/packages/shared/src/selectors/backlogItemSelectors.ts b/packages/shared/src/selectors/backlogItemSelectors.ts index 4cd9c8c..6ff7397 100644 --- a/packages/shared/src/selectors/backlogItemSelectors.ts +++ b/packages/shared/src/selectors/backlogItemSelectors.ts @@ -164,6 +164,11 @@ export const getCurrentBacklogItemAcceptanceCriteria = createSelector( (backlogItems: BacklogItemsState): string => backlogItems.currentItem?.acceptanceCriteria ); +export const getCurrentBacklogItemNotes = createSelector( + [backlogItems], + (backlogItems: BacklogItemsState): string => backlogItems.currentItem?.notes +); + export const getCurrentBacklogItemStartedAt = createSelector( [backlogItems], (backlogItems: BacklogItemsState): Date | null => backlogItems.currentItem?.startedAt diff --git a/packages/shared/src/types/apiModelTypes.ts b/packages/shared/src/types/apiModelTypes.ts index 453c562..4a954e4 100644 --- a/packages/shared/src/types/apiModelTypes.ts +++ b/packages/shared/src/types/apiModelTypes.ts @@ -83,6 +83,7 @@ export type ApiBacklogItem = StandardItem & /* new fields */ acceptanceCriteria: string | null; + notes: string | null; estimate: number | null; storyEstimate: number | null; externalId: string | null; @@ -115,6 +116,7 @@ export type ApiBacklogItemWithParts = ApiBacklogItem & { /* from ApiBacklogItem */ acceptanceCriteria: string | null; + notes: string | null; estimate: number | null; externalId: string | null; friendlyId: string | null; diff --git a/packages/shared/src/types/backlogItemTypes.ts b/packages/shared/src/types/backlogItemTypes.ts index 5e8abba..3aa4f7a 100644 --- a/packages/shared/src/types/backlogItemTypes.ts +++ b/packages/shared/src/types/backlogItemTypes.ts @@ -8,6 +8,7 @@ export type BacklogItemType = "story" | "issue"; export interface BacklogItemModel extends BaseModelItem { acceptanceCriteria: string | null; + notes: string | null; acceptedAt: Date | null; createdAt: Date; estimate: number | null; diff --git a/packages/shared/src/utils/apiPayloadHelper.ts b/packages/shared/src/utils/apiPayloadHelper.ts index f465e98..a53afaf 100644 --- a/packages/shared/src/utils/apiPayloadHelper.ts +++ b/packages/shared/src/utils/apiPayloadHelper.ts @@ -5,6 +5,7 @@ import type { SprintModel } from "../types/sprintTypes"; export const convertToBacklogItemModel = (backlogItem: BacklogItem): BacklogItemModel => ({ acceptanceCriteria: backlogItem.acceptanceCriteria, + notes: backlogItem.notes, acceptedAt: backlogItem.acceptedAt, createdAt: backlogItem.createdAt, estimate: backlogItem.estimate, diff --git a/packages/shared/src/utils/businessItemCloners.ts b/packages/shared/src/utils/businessItemCloners.ts index 3f7d2eb..c9e2347 100644 --- a/packages/shared/src/utils/businessItemCloners.ts +++ b/packages/shared/src/utils/businessItemCloners.ts @@ -3,6 +3,7 @@ import { ApiBacklogItem, ApiBacklogItemPart } from "../types/apiModelTypes"; export const cloneApiBacklogItem = (apiItem: ApiBacklogItem): ApiBacklogItem => ({ acceptanceCriteria: apiItem.acceptanceCriteria, + notes: apiItem.notes, acceptedAt: apiItem.acceptedAt, createdAt: apiItem.createdAt, estimate: apiItem.estimate, diff --git a/packages/shared/src/views/BacklogItemView.tsx b/packages/shared/src/views/BacklogItemView.tsx index a6bff00..5adefec 100644 --- a/packages/shared/src/views/BacklogItemView.tsx +++ b/packages/shared/src/views/BacklogItemView.tsx @@ -26,6 +26,7 @@ import { export interface BacklogItemViewStateProps { acceptanceCriteria: string; + notes: string; acceptedAt: Date | null; backlogItemDisplayId: string; editMode: EditMode; @@ -84,6 +85,7 @@ export const BacklogItemView: React.FC = (props) => { storyPhrase={props.storyPhrase} reasonPhrase={props.reasonPhrase} acceptanceCriteria={props.acceptanceCriteria} + notes={props.notes} startedAt={props.startedAt} finishedAt={props.finishedAt} acceptedAt={props.acceptedAt} diff --git a/packages/shared/src/views/BacklogItemViewContainer.ts b/packages/shared/src/views/BacklogItemViewContainer.ts index bd103dd..c58705f 100644 --- a/packages/shared/src/views/BacklogItemViewContainer.ts +++ b/packages/shared/src/views/BacklogItemViewContainer.ts @@ -29,6 +29,7 @@ export interface BacklogItemViewContainerOwnProps { const mapStateToProps = (state: StateTree, ownProps: BacklogItemViewContainerOwnProps): BacklogItemViewStateProps => { const result: BacklogItemViewStateProps = { acceptanceCriteria: backlogItemSelectors.getCurrentBacklogItemAcceptanceCriteria(state), + notes: backlogItemSelectors.getCurrentBacklogItemNotes(state), acceptedAt: backlogItemSelectors.getCurrentBacklogItemAcceptedAt(state), backlogItemDisplayId: ownProps.match.params.backlogItemDisplayId, editMode: appSelectors.getAppEditMode(state), diff --git a/packages/shared/stories/organisms/index.stories.tsx b/packages/shared/stories/organisms/index.stories.tsx index 7d1d709..5fb36da 100644 --- a/packages/shared/stories/organisms/index.stories.tsx +++ b/packages/shared/stories/organisms/index.stories.tsx @@ -238,6 +238,7 @@ storiesOf("Organisms/Panels/SprintPlanningPanel", module).add("SprintPlanningPan externalId: "gh-123", finishedAt: null, friendlyId: "", + notes: "", partIndex: number("partIndex", 1), partPercentage: 0.5, projectId: "", diff --git a/packages/web-app/package.json b/packages/web-app/package.json index b14b2d7..2e0f590 100644 --- a/packages/web-app/package.json +++ b/packages/web-app/package.json @@ -1,6 +1,6 @@ { "name": "@atoll/web-app", - "version": "0.64.0", + "version": "0.65.0", "description": "Atoll web app", "scripts": { "build": "npm run build-only && npm run build-deploy", diff --git a/packages/web-app/src/database/erd/dbdiagram-io.txt b/packages/web-app/src/database/erd/dbdiagram-io.txt index 400cd00..cbac45e 100644 --- a/packages/web-app/src/database/erd/dbdiagram-io.txt +++ b/packages/web-app/src/database/erd/dbdiagram-io.txt @@ -10,6 +10,7 @@ Table backlogitem as BI { "projectId" varchar(32) status char(1) "acceptanceCriteria" text + "notes" text "startedAt" timestamp "finishedAt" timestamp "acceptedAt" timestamp diff --git a/packages/web-app/src/database/model/upgrade.sql b/packages/web-app/src/database/model/upgrade.sql index 2a993a4..59c2177 100644 --- a/packages/web-app/src/database/model/upgrade.sql +++ b/packages/web-app/src/database/model/upgrade.sql @@ -118,3 +118,6 @@ rename constraint "backlogitemrank_nextbacklogitemId_fkey" TO "productbacklogite alter table productbacklogitem rename constraint "backlogitemrank_pkey" TO "productbacklogitem_pkey"; + +-- v0.65.0 +alter table backlogitem add column "notes" text; diff --git a/packages/web-app/src/server/api/utils/__tests__/statusChangeUtils.test.ts b/packages/web-app/src/server/api/utils/__tests__/statusChangeUtils.test.ts index 3912488..67c6ae7 100644 --- a/packages/web-app/src/server/api/utils/__tests__/statusChangeUtils.test.ts +++ b/packages/web-app/src/server/api/utils/__tests__/statusChangeUtils.test.ts @@ -21,6 +21,7 @@ const buildApiBacklogItem = (): ApiBacklogItem => { storyPhrase: "I can chill on the couch", reasonPhrase: "because automation does my job for me", acceptanceCriteria: "* Not real acceptance criteria", + notes: "* Not real notes", acceptedAt: null, // "2020-12-27T19:00:00Z" estimate: 5, externalId: "ext-123", diff --git a/packages/web-app/src/server/dataaccess/mappers/__tests__/apiToDataAccessMappers.test.ts b/packages/web-app/src/server/dataaccess/mappers/__tests__/apiToDataAccessMappers.test.ts index 3ce96aa..8d59d11 100644 --- a/packages/web-app/src/server/dataaccess/mappers/__tests__/apiToDataAccessMappers.test.ts +++ b/packages/web-app/src/server/dataaccess/mappers/__tests__/apiToDataAccessMappers.test.ts @@ -29,6 +29,7 @@ describe("API To Data Object Mappers", () => { type: "story", status: "R", acceptanceCriteria: "* successfully test this mapping function", + notes: "* successfully test notes mapping", startedAt: "2022-04-04T14:15:39.446Z", finishedAt: "2022-04-06T12:39:23.223Z", acceptedAt: "2022-04-06T14:45:15.767Z", @@ -48,6 +49,7 @@ describe("API To Data Object Mappers", () => { // assert const shellDbItem = { acceptanceCriteria: "* successfully test this mapping function", + notes: "* successfully test notes db mapping", acceptedAt: new Date("2022-04-06T14:45:15.767Z"), createdAt: new Date("2022-04-02T09:59:01.000Z"), estimate: 13, diff --git a/packages/web-app/src/server/dataaccess/mappers/__tests__/dataAccessToApiMappers.test.ts b/packages/web-app/src/server/dataaccess/mappers/__tests__/dataAccessToApiMappers.test.ts index 024b04e..3dd794d 100644 --- a/packages/web-app/src/server/dataaccess/mappers/__tests__/dataAccessToApiMappers.test.ts +++ b/packages/web-app/src/server/dataaccess/mappers/__tests__/dataAccessToApiMappers.test.ts @@ -61,6 +61,7 @@ describe("Data Object To API Mappers", () => { type: "story", status: "R", acceptanceCriteria: "* successfully test this mapping function", + notes: "* successfully test notes mapping again", startedAt: new Date("2022-04-04T14:15:39.446Z"), finishedAt: new Date("2022-04-06T12:39:23.223Z"), acceptedAt: new Date("2022-04-06T14:45:15.767Z"), @@ -89,6 +90,7 @@ describe("Data Object To API Mappers", () => { type: "story", status: "R", acceptanceCriteria: "* successfully test this mapping function", + notes: "* successfully test notes mapping again and again", startedAt: "2022-04-04T14:15:39.446Z", finishedAt: "2022-04-06T12:39:23.223Z", acceptedAt: "2022-04-06T14:45:15.767Z", diff --git a/packages/web-app/src/server/dataaccess/mappers/dataAccessToApiMappers.ts b/packages/web-app/src/server/dataaccess/mappers/dataAccessToApiMappers.ts index 015cb8b..a8e2971 100644 --- a/packages/web-app/src/server/dataaccess/mappers/dataAccessToApiMappers.ts +++ b/packages/web-app/src/server/dataaccess/mappers/dataAccessToApiMappers.ts @@ -116,6 +116,7 @@ export const mapDbSprintBacklogWithNestedToApiBacklogItemInSprint = (dbItem: any const backlogitem = backlogitempart?.backlogitem?.dataValues; const result: ApiBacklogItemInSprint = { acceptanceCriteria: backlogitem.acceptanceCriteria, + notes: backlogitem.notes, acceptedAt: backlogitem.acceptedAt, createdAt: backlogitem.createdAt, displayindex: sprintBacklogWithItems.displayindex, @@ -163,6 +164,7 @@ export const mapDbBacklogPartsWithSprintItemsToApiBacklogItemInSprint = (dbItem: const sprintbacklogitem = partsWithSprintItems?.sprintbacklogitems?.[0]?.dataValues; const result: ApiBacklogItemInSprint = { acceptanceCriteria: backlogitem.acceptanceCriteria, + notes: backlogitem.notes, acceptedAt: backlogitem.acceptedAt, createdAt: backlogitem.createdAt, displayindex: sprintbacklogitem.displayindex, diff --git a/packages/web-app/src/server/dataaccess/models/BacklogItemDataModel.ts b/packages/web-app/src/server/dataaccess/models/BacklogItemDataModel.ts index 776f840..1be51df 100644 --- a/packages/web-app/src/server/dataaccess/models/BacklogItemDataModel.ts +++ b/packages/web-app/src/server/dataaccess/models/BacklogItemDataModel.ts @@ -19,6 +19,7 @@ export class BacklogItemDataModel extends Model { public type!: string; public status!: string | null; public acceptanceCriteria!: string | null; + public notes!: string | null; public startedAt!: Date | null; public finishedAt!: Date | null; public acceptedAt!: Date | null; @@ -82,6 +83,10 @@ BacklogItemDataModel.init( type: DataTypes.TEXT, allowNull: true }, + notes: { + type: DataTypes.TEXT, + allowNull: true + }, totalParts: { type: DataTypes.INTEGER, allowNull: true From 5a541d15856840912e948ca07d585af925034600 Mon Sep 17 00:00:00 2001 From: Kevin Berry <41717340+51ngul4r1ty@users.noreply.github.com> Date: Thu, 25 Jan 2024 09:54:06 -0500 Subject: [PATCH 2/2] merge master --- .../web-app/src/server/api/handlers/backlogItems.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/web-app/src/server/api/handlers/backlogItems.ts b/packages/web-app/src/server/api/handlers/backlogItems.ts index 61028f6..4888c4f 100644 --- a/packages/web-app/src/server/api/handlers/backlogItems.ts +++ b/packages/web-app/src/server/api/handlers/backlogItems.ts @@ -378,10 +378,10 @@ export const backlogItemPutHandler = async (req: Request, res: Response) => { newDataItem.unallocatedPoints = requestApiBacklogItem.estimate; } await backlogItem.update(newDataItem, { transaction }); - const responseBacklogItem = mapApiItemToBacklogItem(backlogItem); - responseBacklogItem.storyEstimate = responseBacklogItem.estimate; // just updated the story estimate - responseBacklogItem.unallocatedPoints = responseBacklogItem.estimate; // all are in backlog - await handleResponseAndCommit(originalApiBacklogItem, responseBacklogItem, res, transaction); + const responseApiBacklogItem = mapDbToApiBacklogItem(backlogItem); + responseApiBacklogItem.storyEstimate = responseApiBacklogItem.estimate; // just updated the story estimate + responseApiBacklogItem.unallocatedPoints = responseApiBacklogItem.estimate; // all are in backlog + await handleResponseAndCommit(originalApiBacklogItem, responseApiBacklogItem, res, transaction); } } catch (err) { const errLogContext = logger.warn(`handling error "${err}"`, [functionTag], logContext); @@ -556,15 +556,14 @@ export const backlogItemJoinUnallocatedPartsPostHandler = async (req: Request, r const handleResponseAndCommit = async ( originalApiBacklogItem: ApiBacklogItem, - backlogItem: BacklogItemDataModel, + apiBacklogItem: ApiBacklogItem, res: Response, transaction: Transaction ): Promise => { let sprintStats: ApiSprintStats; - const originalBacklogItem = mapApiItemToBacklogItem(originalApiBacklogItem); if (transaction) { await transaction.commit(); transaction = null; } - respondWithItem(res, backlogItem, originalBacklogItem, sprintStats ? { sprintStats } : undefined); + respondWithItem(res, apiBacklogItem, originalApiBacklogItem, sprintStats ? { sprintStats } : undefined); };