chore(feature-flags): Remove OrderEditing feature flag (#3006)

This commit is contained in:
Oliver Windall Juhl
2023-01-13 11:10:09 +00:00
committed by GitHub
parent d2c692aa96
commit 9e3beaf531
51 changed files with 300 additions and 984 deletions
@@ -1,6 +1,5 @@
import { IdMap } from "medusa-test-utils"
import { request } from "../../../../../helpers/test-request"
import OrderEditingFeatureFlag from "../../../../../loaders/feature-flags/order-editing"
import { orderEditServiceMock } from "../../../../../services/__mocks__/order-edit"
describe("POST /admin/order-edits/:id/cancel", () => {
@@ -17,8 +16,7 @@ describe("POST /admin/order-edits/:id/cancel", () => {
jwt: {
userId: IdMap.getId("admin_user"),
},
},
flags: [OrderEditingFeatureFlag],
}
}
)
})
@@ -1,6 +1,5 @@
import { IdMap } from "medusa-test-utils"
import { request } from "../../../../../helpers/test-request"
import OrderEditingFeatureFlag from "../../../../../loaders/feature-flags/order-editing"
import { orderEditServiceMock } from "../../../../../services/__mocks__/order-edit"
describe("POST /admin/order-edits/:id/confirm", () => {
@@ -18,7 +17,6 @@ describe("POST /admin/order-edits/:id/confirm", () => {
userId: "admin_user",
},
},
flags: [OrderEditingFeatureFlag],
}
)
})
@@ -1,6 +1,5 @@
import { IdMap } from "medusa-test-utils"
import { request } from "../../../../../helpers/test-request"
import OrderEditingFeatureFlag from "../../../../../loaders/feature-flags/order-editing"
import { orderEditServiceMock } from "../../../../../services/__mocks__/order-edit"
describe("POST /admin/order-edits", () => {
@@ -20,7 +19,6 @@ describe("POST /admin/order-edits", () => {
userId: IdMap.getId("admin_user"),
},
},
flags: [OrderEditingFeatureFlag],
})
})
@@ -1,6 +1,5 @@
import { IdMap } from "medusa-test-utils"
import { request } from "../../../../../helpers/test-request"
import OrderEditingFeatureFlag from "../../../../../loaders/feature-flags/order-editing"
import { orderEditServiceMock } from "../../../../../services/__mocks__/order-edit"
describe("DELETE /admin/order-edits/:id/items/:item_id", () => {
@@ -16,7 +15,6 @@ describe("DELETE /admin/order-edits/:id/items/:item_id", () => {
userId: IdMap.getId("admin_user"),
},
},
flags: [OrderEditingFeatureFlag],
})
})
@@ -1,6 +1,5 @@
import { IdMap } from "medusa-test-utils"
import { request } from "../../../../../helpers/test-request"
import OrderEditingFeatureFlag from "../../../../../loaders/feature-flags/order-editing"
import { orderEditServiceMock } from "../../../../../services/__mocks__/order-edit"
describe("DELETE /admin/order-edits/:id/changes/:change_id", () => {
@@ -19,7 +18,6 @@ describe("DELETE /admin/order-edits/:id/changes/:change_id", () => {
userId: IdMap.getId("admin_user"),
},
},
flags: [OrderEditingFeatureFlag],
}
)
})
@@ -1,6 +1,5 @@
import { IdMap } from "medusa-test-utils"
import { request } from "../../../../../helpers/test-request"
import OrderEditingFeatureFlag from "../../../../../loaders/feature-flags/order-editing"
import { orderEditServiceMock } from "../../../../../services/__mocks__/order-edit"
describe("DELETE /admin/order-edits/:id", () => {
@@ -15,7 +14,6 @@ describe("DELETE /admin/order-edits/:id", () => {
userId: IdMap.getId("admin_user"),
},
},
flags: [OrderEditingFeatureFlag],
})
})
@@ -1,10 +1,9 @@
import { IdMap } from "medusa-test-utils"
import { request } from "../../../../../helpers/test-request"
import { orderEditServiceMock } from "../../../../../services/__mocks__/order-edit"
import OrderEditingFeatureFlag from "../../../../../loaders/feature-flags/order-editing"
import {
defaultOrderEditFields,
defaultOrderEditRelations,
defaultOrderEditRelations
} from "../../../../../types/order-edit"
describe("GET /admin/order-edits/:id", () => {
@@ -19,7 +18,6 @@ describe("GET /admin/order-edits/:id", () => {
userId: IdMap.getId("admin_user"),
},
},
flags: [OrderEditingFeatureFlag],
})
})
@@ -1,10 +1,9 @@
import { IdMap } from "medusa-test-utils"
import { request } from "../../../../../helpers/test-request"
import { orderEditServiceMock } from "../../../../../services/__mocks__/order-edit"
import OrderEditingFeatureFlag from "../../../../../loaders/feature-flags/order-editing"
import {
defaultOrderEditFields,
defaultOrderEditRelations,
defaultOrderEditRelations
} from "../../../../../types/order-edit"
describe("GET /admin/order-edits", () => {
@@ -18,7 +17,6 @@ describe("GET /admin/order-edits", () => {
userId: IdMap.getId("admin_user"),
},
},
flags: [OrderEditingFeatureFlag],
})
})
@@ -2,7 +2,6 @@ import { IdMap } from "medusa-test-utils"
import { request } from "../../../../../helpers/test-request"
import { orderEditServiceMock } from "../../../../../services/__mocks__/order-edit"
import OrderEditingFeatureFlag from "../../../../../loaders/feature-flags/order-editing"
describe("GET /admin/order-edits/:id", () => {
describe("successfully requests an order edit confirmation", () => {
@@ -19,7 +18,6 @@ describe("GET /admin/order-edits/:id", () => {
userId: IdMap.getId("admin_user"),
},
},
flags: [OrderEditingFeatureFlag],
payload: {
payment_collection_description: "PayCol description",
},
@@ -1,6 +1,5 @@
import { IdMap } from "medusa-test-utils"
import { request } from "../../../../../helpers/test-request"
import OrderEditingFeatureFlag from "../../../../../loaders/feature-flags/order-editing"
import { orderEditServiceMock } from "../../../../../services/__mocks__/order-edit"
describe("POST /admin/order-edits/:id/items/:item_id", () => {
@@ -22,7 +21,6 @@ describe("POST /admin/order-edits/:id/items/:item_id", () => {
userId: IdMap.getId("admin_user"),
},
},
flags: [OrderEditingFeatureFlag],
}
)
})
@@ -1,33 +1,27 @@
import { Router } from "express"
import middlewares, {
transformBody,
transformQuery,
} from "../../../middlewares"
import { OrderEdit } from "../../../../models"
import { DeleteResponse, PaginatedResponse } from "../../../../types/common"
import { isFeatureFlagEnabled } from "../../../middlewares/feature-flag-enabled"
import OrderEditingFeatureFlag from "../../../../loaders/feature-flags/order-editing"
import {
defaultOrderEditFields,
defaultOrderEditRelations,
} from "../../../../types/order-edit"
import { OrderEdit } from "../../../../models"
import { AdminPostOrderEditsOrderEditReq } from "./update-order-edit"
import { AdminPostOrderEditsReq } from "./create-order-edit"
import middlewares, {
transformBody,
transformQuery,
} from "../../../middlewares"
import { AdminPostOrderEditsEditLineItemsReq } from "./add-line-item"
import { AdminPostOrderEditsEditLineItemsLineItemReq } from "./update-order-edit-line-item"
import { GetOrderEditsParams } from "./list-order-edit"
import { AdminPostOrderEditsReq } from "./create-order-edit"
import { GetOrderEditsOrderEditParams } from "./get-order-edit"
import { GetOrderEditsParams } from "./list-order-edit"
import { AdminPostOrderEditsRequestConfirmationReq } from "./request-confirmation"
import { AdminPostOrderEditsOrderEditReq } from "./update-order-edit"
import { AdminPostOrderEditsEditLineItemsLineItemReq } from "./update-order-edit-line-item"
const route = Router()
export default (app) => {
app.use(
"/order-edits",
isFeatureFlagEnabled(OrderEditingFeatureFlag.key),
route
)
app.use("/order-edits", route)
route.post(
"/",
@@ -117,10 +111,10 @@ export type AdminOrderEditItemChangeDeleteRes = {
deleted: boolean
}
export * from "./update-order-edit"
export * from "./update-order-edit-line-item"
export * from "./add-line-item"
export * from "./create-order-edit"
export * from "./get-order-edit"
export * from "./list-order-edit"
export * from "./add-line-item"
export * from "./request-confirmation"
export * from "./update-order-edit"
export * from "./update-order-edit-line-item"
@@ -4,21 +4,15 @@ import middlewares, {
transformBody,
transformQuery,
} from "../../../middlewares"
import OrderEditingFeatureFlag from "../../../../loaders/feature-flags/order-editing"
import { isFeatureFlagEnabled } from "../../../middlewares/feature-flag-enabled"
import { PaymentCollection } from "../../../../models"
import { GetPaymentCollectionsParams } from "./get-payment-collection"
import { AdminUpdatePaymentCollectionsReq } from "./update-payment-collection"
import { PaymentCollection } from "../../../../models"
const route = Router()
export default (app, container) => {
app.use(
"/payment-collections",
isFeatureFlagEnabled(OrderEditingFeatureFlag.key),
route
)
app.use("/payment-collections", route)
route.get(
"/:id",
@@ -4,17 +4,15 @@ import middlewares, {
transformBody,
transformQuery,
} from "../../../middlewares"
import OrderEditingFeatureFlag from "../../../../loaders/feature-flags/order-editing"
import { isFeatureFlagEnabled } from "../../../middlewares/feature-flag-enabled"
import { Payment, Refund } from "../../../../models"
import { GetPaymentsParams } from "./get-payment"
import { AdminPostPaymentRefundsReq } from "./refund-payment"
import { Payment, Refund } from "../../../../models"
const route = Router()
export default (app, container) => {
app.use("/payments", isFeatureFlagEnabled(OrderEditingFeatureFlag.key), route)
app.use("/payments", route)
route.get(
"/:id",
@@ -1,7 +1,6 @@
import { IdMap } from "medusa-test-utils"
import { request } from "../../../../../helpers/test-request"
import { orderEditServiceMock } from "../../../../../services/__mocks__/order-edit"
import OrderEditingFeatureFlag from "../../../../../loaders/feature-flags/order-editing"
describe("GET /store/order-edits/:id/complete", () => {
describe("successfully complete an order edit", () => {
@@ -12,9 +11,6 @@ describe("GET /store/order-edits/:id/complete", () => {
subject = await request(
"POST",
`/store/order-edits/${orderEditId}/complete`,
{
flags: [OrderEditingFeatureFlag],
}
)
})
@@ -44,7 +40,6 @@ describe("GET /store/order-edits/:id/complete", () => {
"POST",
`/store/order-edits/${orderEditId}/complete`,
{
flags: [OrderEditingFeatureFlag],
clientSession: {
jwt: {
user: IdMap.getId("lebron"),
@@ -1,7 +1,6 @@
import { IdMap } from "medusa-test-utils"
import { request } from "../../../../../helpers/test-request"
import { orderEditServiceMock } from "../../../../../services/__mocks__/order-edit"
import OrderEditingFeatureFlag from "../../../../../loaders/feature-flags/order-editing"
describe("GET /store/order-edits/:id/decline", () => {
describe("successfully decline an order edit", () => {
@@ -18,7 +17,6 @@ describe("GET /store/order-edits/:id/decline", () => {
`/store/order-edits/${orderEditId}/decline`,
{
payload,
flags: [OrderEditingFeatureFlag],
}
)
})
@@ -1,10 +1,9 @@
import { IdMap } from "medusa-test-utils"
import { request } from "../../../../../helpers/test-request"
import { orderEditServiceMock } from "../../../../../services/__mocks__/order-edit"
import OrderEditingFeatureFlag from "../../../../../loaders/feature-flags/order-editing"
import {
defaultStoreOrderEditFields,
defaultStoreOrderEditRelations,
defaultStoreOrderEditRelations
} from "../../../../../types/order-edit"
describe("GET /store/order-edits/:id", () => {
@@ -13,9 +12,7 @@ describe("GET /store/order-edits/:id", () => {
let subject
beforeAll(async () => {
subject = await request("GET", `/store/order-edits/${orderEditId}`, {
flags: [OrderEditingFeatureFlag],
})
subject = await request("GET", `/store/order-edits/${orderEditId}`)
})
afterAll(() => {
@@ -1,26 +1,20 @@
import { Router } from "express"
import middlewares, {
transformBody,
transformQuery,
} from "../../../middlewares"
import { OrderEdit } from "../../../../models"
import { FindParams } from "../../../../types/common"
import { isFeatureFlagEnabled } from "../../../middlewares/feature-flag-enabled"
import OrderEditingFeatureFlag from "../../../../loaders/feature-flags/order-editing"
import {
defaultStoreOrderEditFields,
defaultStoreOrderEditRelations,
} from "../../../../types/order-edit"
import { OrderEdit } from "../../../../models"
import middlewares, {
transformBody,
transformQuery,
} from "../../../middlewares"
import { StorePostOrderEditsOrderEditDecline } from "./decline-order-edit"
const route = Router()
export default (app) => {
app.use(
"/order-edits",
isFeatureFlagEnabled(OrderEditingFeatureFlag.key),
route
)
app.use("/order-edits", route)
route.get(
"/:id",
@@ -5,23 +5,16 @@ import middlewares, {
transformQuery,
} from "../../../middlewares"
import OrderEditingFeatureFlag from "../../../../loaders/feature-flags/order-editing"
import { isFeatureFlagEnabled } from "../../../middlewares/feature-flag-enabled"
import { StorePostPaymentCollectionsBatchSessionsReq } from "./manage-batch-payment-sessions"
import { GetPaymentCollectionsParams } from "./get-payment-collection"
import { PaymentCollection, PaymentSession } from "../../../../models"
import { StorePaymentCollectionSessionsReq } from "./manage-payment-session"
import { StorePostPaymentCollectionsBatchSessionsAuthorizeReq } from "./authorize-batch-payment-sessions"
import { GetPaymentCollectionsParams } from "./get-payment-collection"
import { StorePostPaymentCollectionsBatchSessionsReq } from "./manage-batch-payment-sessions"
import { StorePaymentCollectionSessionsReq } from "./manage-payment-session"
const route = Router()
export default (app, container) => {
app.use(
"/payment-collections",
isFeatureFlagEnabled(OrderEditingFeatureFlag.key),
route
)
app.use("/payment-collections", route)
route.get(
"/:id",
@@ -86,8 +79,8 @@ export type StorePaymentCollectionsSessionRes = {
payment_session: PaymentSession
}
export * from "./get-payment-collection"
export * from "./manage-payment-session"
export * from "./manage-batch-payment-sessions"
export * from "./refresh-payment-session"
export * from "./authorize-batch-payment-sessions"
export * from "./get-payment-collection"
export * from "./manage-batch-payment-sessions"
export * from "./manage-payment-session"
export * from "./refresh-payment-session"
@@ -1,10 +1,10 @@
import glob from "glob"
import path from "path"
import { isDefined } from "medusa-core-utils"
import { trackFeatureFlag } from "medusa-telemetry"
import { FlagSettings } from "../../types/feature-flags"
import { Logger } from "../../types/global"
import { isDefined } from "medusa-core-utils"
import { FlagRouter } from "../../utils/flag-router"
const isTruthy = (val: string | boolean | undefined): boolean => {
@@ -2,7 +2,7 @@ import { FlagSettings } from "../../types/feature-flags"
const OrderEditingFeatureFlag: FlagSettings = {
key: "order_editing",
default_val: false,
default_val: true,
env_key: "MEDUSA_FF_ORDER_EDITING",
description: "[WIP] Enable the order editing feature",
}
@@ -1,9 +1,5 @@
import { MigrationInterface, QueryRunner } from "typeorm"
import OrderEditingFeatureFlag from "../loaders/feature-flags/order-editing"
export const featureFlag = OrderEditingFeatureFlag.key
export class orderEditing1663059812399 implements MigrationInterface {
name = "orderEditing1663059812399"
@@ -1,9 +1,5 @@
import { MigrationInterface, QueryRunner } from "typeorm"
import OrderEditingFeatureFlag from "../loaders/feature-flags/order-editing"
export const featureFlag = OrderEditingFeatureFlag.key
export class lineItemOriginalItemRelation1663059812400
implements MigrationInterface
{
@@ -1,9 +1,5 @@
import { MigrationInterface, QueryRunner } from "typeorm"
import OrderEditingFeatureFlag from "../loaders/feature-flags/order-editing"
export const featureFlag = OrderEditingFeatureFlag.key
export class paymentCollection1664880666982 implements MigrationInterface {
name = "paymentCollection1664880666982"
+1 -2
View File
@@ -2,7 +2,6 @@ export * from "./address"
export * from "./analytics-config"
export * from "./batch-job"
export * from "./cart"
export * from "./product-category"
export * from "./claim-image"
export * from "./claim-item"
export * from "./claim-order"
@@ -45,6 +44,7 @@ export * from "./payment-provider"
export * from "./payment-session"
export * from "./price-list"
export * from "./product"
export * from "./product-category"
export * from "./product-collection"
export * from "./product-option"
export * from "./product-option-value"
@@ -61,7 +61,6 @@ export * from "./region"
export * from "./return"
export * from "./return-item"
export * from "./return-reason"
export * from "./sales-channel-location"
export * from "./sales-channel"
export * from "./sales-channel-location"
export * from "./shipping-method"
+18 -36
View File
@@ -6,42 +6,35 @@ import {
Index,
JoinColumn,
ManyToOne,
OneToMany,
OneToMany
} from "typeorm"
import { BaseEntity } from "../interfaces"
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
import { generateEntityId } from "../utils"
import { DbAwareColumn } from "../utils/db-aware-column"
import { FeatureFlagColumn } from "../utils/feature-flag-decorators"
import { Cart } from "./cart"
import { ClaimOrder } from "./claim-order"
import { DbAwareColumn } from "../utils/db-aware-column"
import { LineItemAdjustment } from "./line-item-adjustment"
import { LineItemTaxLine } from "./line-item-tax-line"
import { Order } from "./order"
import { OrderEdit } from "./order-edit"
import { ProductVariant } from "./product-variant"
import { Swap } from "./swap"
import { generateEntityId } from "../utils"
import {
FeatureFlagClassDecorators,
FeatureFlagColumn,
FeatureFlagDecorators,
} from "../utils/feature-flag-decorators"
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
import OrderEditingFeatureFlag from "../loaders/feature-flags/order-editing"
import { OrderEdit } from "./order-edit"
@Check(`"fulfilled_quantity" <= "quantity"`)
@Check(`"shipped_quantity" <= "fulfilled_quantity"`)
@Check(`"returned_quantity" <= "quantity"`)
@Check(`"quantity" > 0`)
@FeatureFlagClassDecorators(OrderEditingFeatureFlag.key, [
Index(
"unique_li_original_item_id_order_edit_id",
["order_edit_id", "original_item_id"],
{
unique: true,
where: "WHERE original_item_id IS NOT NULL AND order_edit_id IS NOT NULL",
}
),
])
@Index(
"unique_li_original_item_id_order_edit_id",
["order_edit_id", "original_item_id"],
{
unique: true,
where: "original_item_id IS NOT NULL AND order_edit_id IS NOT NULL",
}
)
@Entity()
export class LineItem extends BaseEntity {
@Index()
@@ -84,25 +77,14 @@ export class LineItem extends BaseEntity {
})
adjustments: LineItemAdjustment[]
@FeatureFlagColumn(OrderEditingFeatureFlag.key, {
nullable: true,
type: "varchar",
})
@Column({ nullable: true, type: "varchar" })
original_item_id?: string | null
@FeatureFlagColumn(OrderEditingFeatureFlag.key, {
nullable: true,
type: "varchar",
})
@Column({ nullable: true, type: "varchar" })
order_edit_id?: string | null
@FeatureFlagDecorators(OrderEditingFeatureFlag.key, [
ManyToOne(
() => OrderEdit,
(orderEdit) => orderEdit.items
),
JoinColumn({ name: "order_edit_id" }),
])
@ManyToOne(() => OrderEdit, (orderEdit) => orderEdit.items)
@JoinColumn({ name: "order_edit_id" })
order_edit?: OrderEdit | null
@Column()
+3 -4
View File
@@ -2,18 +2,17 @@ import {
AfterLoad,
BeforeInsert,
Column,
Entity,
Index,
JoinColumn,
ManyToOne,
OneToMany,
OneToOne
OneToOne,
} from "typeorm"
import { BaseEntity } from "../interfaces"
import OrderEditingFeatureFlag from "../loaders/feature-flags/order-editing"
import { generateEntityId } from "../utils"
import { resolveDbType } from "../utils/db-aware-column"
import { FeatureFlagEntity } from "../utils/feature-flag-decorators"
import { LineItem, Order, OrderItemChange, PaymentCollection } from "."
@@ -25,7 +24,7 @@ export enum OrderEditStatus {
CANCELED = "canceled",
}
@FeatureFlagEntity(OrderEditingFeatureFlag.key)
@Entity()
export class OrderEdit extends BaseEntity {
@Index()
@Column()
@@ -1,6 +1,7 @@
import {
BeforeInsert,
Column,
Entity,
JoinColumn,
ManyToOne,
OneToOne,
@@ -8,12 +9,10 @@ import {
} from "typeorm"
import { SoftDeletableEntity } from "../interfaces"
import OrderEditingFeatureFlag from "../loaders/feature-flags/order-editing"
import { FeatureFlagEntity } from "../utils/feature-flag-decorators"
import { generateEntityId } from "../utils"
import { DbAwareColumn } from "../utils/db-aware-column"
import { OrderEdit } from "./order-edit"
import { LineItem } from "./line-item"
import { OrderEdit } from "./order-edit"
export enum OrderEditItemChangeType {
ITEM_ADD = "item_add",
@@ -21,9 +20,9 @@ export enum OrderEditItemChangeType {
ITEM_UPDATE = "item_update",
}
@FeatureFlagEntity(OrderEditingFeatureFlag.key)
@Unique(["order_edit_id", "original_line_item_id"])
@Unique(["order_edit_id", "line_item_id"])
@Entity()
export class OrderItemChange extends SoftDeletableEntity {
@DbAwareColumn({
type: "enum",
+5 -11
View File
@@ -21,8 +21,10 @@ import {
FeatureFlagDecorators,
} from "../utils/feature-flag-decorators"
import { Address } from "./address"
import { BaseEntity } from "../interfaces/models/base-entity"
import { generateEntityId } from "../utils/generate-entity-id"
import { manualAutoIncrement } from "../utils/manual-auto-increment"
import { Address } from "./address"
import { Cart } from "./cart"
import { ClaimOrder } from "./claim-order"
import { Currency } from "./currency"
@@ -33,6 +35,7 @@ import { Fulfillment } from "./fulfillment"
import { GiftCard } from "./gift-card"
import { GiftCardTransaction } from "./gift-card-transaction"
import { LineItem } from "./line-item"
import { OrderEdit } from "./order-edit"
import { Payment } from "./payment"
import { Refund } from "./refund"
import { Region } from "./region"
@@ -40,10 +43,6 @@ import { Return } from "./return"
import { SalesChannel } from "./sales-channel"
import { ShippingMethod } from "./shipping-method"
import { Swap } from "./swap"
import { generateEntityId } from "../utils/generate-entity-id"
import { manualAutoIncrement } from "../utils/manual-auto-increment"
import { OrderEdit } from "./order-edit"
import OrderEditingFeatureFlag from "../loaders/feature-flags/order-editing"
export enum OrderStatus {
PENDING = "pending",
@@ -211,12 +210,7 @@ export class Order extends BaseEntity {
@JoinColumn({ name: "draft_order_id" })
draft_order: DraftOrder
@FeatureFlagDecorators(OrderEditingFeatureFlag.key, [
OneToMany(
() => OrderEdit,
(oe) => oe.order
),
])
@OneToMany(() => OrderEdit, (oe) => oe.order)
edits: OrderEdit[]
@OneToMany(() => LineItem, (lineItem) => lineItem.order, {
@@ -1,6 +1,7 @@
import {
BeforeInsert,
Column,
Entity,
Index,
JoinColumn,
JoinTable,
@@ -8,13 +9,10 @@ import {
ManyToOne,
} from "typeorm"
import { SoftDeletableEntity } from "../interfaces/models/soft-deletable-entity"
import { DbAwareColumn } from "../utils/db-aware-column"
import { generateEntityId } from "../utils"
import { Currency, Payment, PaymentSession, Region } from "."
import OrderEditingFeatureFlag from "../loaders/feature-flags/order-editing"
import { FeatureFlagEntity } from "../utils/feature-flag-decorators"
import { SoftDeletableEntity } from "../interfaces/models/soft-deletable-entity"
import { generateEntityId } from "../utils"
import { DbAwareColumn } from "../utils/db-aware-column"
export enum PaymentCollectionStatus {
NOT_PAID = "not_paid",
@@ -28,7 +26,7 @@ export enum PaymentCollectionType {
ORDER_EDIT = "order_edit",
}
@FeatureFlagEntity(OrderEditingFeatureFlag.key)
@Entity()
export class PaymentCollection extends SoftDeletableEntity {
@DbAwareColumn({ type: "enum", enum: PaymentCollectionType })
type: PaymentCollectionType
+17 -13
View File
@@ -1,11 +1,17 @@
import { BeforeInsert, Column, Entity, Index, JoinColumn, ManyToOne, Unique, } from "typeorm"
import {
BeforeInsert,
Column,
Entity,
Index,
JoinColumn,
ManyToOne,
Unique,
} from "typeorm"
import { BaseEntity } from "../interfaces"
import { Cart } from "./cart"
import { DbAwareColumn, resolveDbType } from "../utils/db-aware-column"
import { generateEntityId } from "../utils"
import { FeatureFlagDecorators } from "../utils/feature-flag-decorators"
import OrderEditingFeatureFlag from "../loaders/feature-flags/order-editing"
import { DbAwareColumn, resolveDbType } from "../utils/db-aware-column"
import { Cart } from "./cart"
export enum PaymentSessionStatus {
AUTHORIZED = "authorized",
@@ -16,8 +22,10 @@ export enum PaymentSessionStatus {
}
@Unique("OneSelected", ["cart_id", "is_selected"])
// TODO: This uniq constraint should be updated once the order edit flag is dropped and should add a where clause on cart_id is not null
@Unique("UniqPaymentSessionCartIdProviderId", ["cart_id", "provider_id"])
@Index("UniqPaymentSessionCartIdProviderId", ["cart_id", "provider_id"], {
unique: true,
where: "cart_id IS NOT NULL",
})
@Entity()
export class PaymentSession extends BaseEntity {
@Index()
@@ -47,14 +55,10 @@ export class PaymentSession extends BaseEntity {
@Column({ nullable: true })
idempotency_key: string
@FeatureFlagDecorators(OrderEditingFeatureFlag.key, [
Column({ type: "integer", nullable: true }),
])
@Column({ type: "integer", nullable: true })
amount: number
@FeatureFlagDecorators(OrderEditingFeatureFlag.key, [
Column({ type: resolveDbType("timestamptz"), nullable: true }),
])
@Column({ type: resolveDbType("timestamptz"), nullable: true })
payment_authorized_at: Date
@BeforeInsert()
+5 -11
View File
@@ -10,11 +10,9 @@ import {
import { BaseEntity } from "../interfaces/models/base-entity"
import { DbAwareColumn } from "../utils/db-aware-column"
import { Order } from "./order"
import { generateEntityId } from "../utils/generate-entity-id"
import { Order } from "./order"
import { Payment } from "./payment"
import { FeatureFlagDecorators } from "../utils/feature-flag-decorators"
import OrderEditingFeatureFlag from "../loaders/feature-flags/order-editing"
export enum RefundReason {
DISCOUNT = "discount",
@@ -30,20 +28,16 @@ export class Refund extends BaseEntity {
@Column({ nullable: true })
order_id: string
@FeatureFlagDecorators(OrderEditingFeatureFlag.key, [
Index(),
Column({ nullable: true }),
])
@Index()
@Column({ nullable: true })
payment_id: string
@ManyToOne(() => Order, (order) => order.payments)
@JoinColumn({ name: "order_id" })
order: Order
@FeatureFlagDecorators(OrderEditingFeatureFlag.key, [
OneToOne(() => Payment, { nullable: true }),
JoinColumn({ name: "payment_id" }),
])
@OneToOne(() => Payment, { nullable: true })
@JoinColumn({ name: "payment_id" })
payment: Payment
@Column({ type: "int" })
@@ -4,7 +4,6 @@ import LineItemService from "../line-item"
import { PricingServiceMock } from "../__mocks__/pricing"
import { ProductVariantServiceMock } from "../__mocks__/product-variant"
import { RegionServiceMock } from "../__mocks__/region"
;[true, false].forEach((isTaxInclusiveEnabled) => {
describe(`tax inclusive flag set to: ${isTaxInclusiveEnabled}`, () => {
describe("LineItemService", () => {
@@ -428,6 +427,7 @@ describe("LineItemService", () => {
thumbnail: "",
variant_id: IdMap.getId("test-variant"),
quantity: 1,
order_edit_id: null,
allow_discounts: undefined,
is_giftcard: undefined,
metadata: {},
@@ -464,6 +464,7 @@ describe("LineItemService", () => {
variant_id: IdMap.getId("test-variant"),
quantity: 1,
allow_discounts: undefined,
order_edit_id: null,
is_giftcard: undefined,
metadata: {},
should_merge: true,
@@ -585,6 +586,7 @@ describe("LineItemService", () => {
variant_id: IdMap.getId("test-variant"),
quantity: 1,
allow_discounts: undefined,
order_edit_id: null,
is_giftcard: undefined,
metadata: {},
should_merge: true,
@@ -621,6 +623,7 @@ describe("LineItemService", () => {
quantity: 1,
allow_discounts: undefined,
is_giftcard: undefined,
order_edit_id: null,
metadata: {},
should_merge: true,
includes_tax: false,
+2 -4
View File
@@ -3,7 +3,6 @@ import { EntityManager, In } from "typeorm"
import { DeepPartial } from "typeorm/common/DeepPartial"
import { TransactionBaseService } from "../interfaces"
import OrderEditingFeatureFlag from "../loaders/feature-flags/order-editing"
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
import {
LineItem,
@@ -70,6 +69,7 @@ class LineItemService extends TransactionBaseService {
taxProviderService,
featureFlagRouter,
}: InjectedDependencies) {
// eslint-disable-next-line prefer-rest-params
super(arguments[0])
this.manager_ = manager
@@ -348,9 +348,7 @@ class LineItemService extends TransactionBaseService {
rawLineItem.includes_tax = unitPriceIncludesTax
}
if (this.featureFlagRouter_.isFeatureEnabled(OrderEditingFeatureFlag.key)) {
rawLineItem.order_edit_id = context.order_edit_id || null
}
rawLineItem.order_edit_id = context.order_edit_id || null
const lineItemRepo = transactionManager.getCustomRepository(
this.lineItemRepository_
@@ -1,18 +1,12 @@
import { isDefined, MedusaError } from "medusa-core-utils"
import { BasePaymentService } from "medusa-interfaces"
import { EntityManager } from "typeorm"
import {
AbstractPaymentService,
PaymentContext,
PaymentSessionResponse,
TransactionBaseService,
} from "../interfaces"
import { EntityManager } from "typeorm"
import { PaymentSessionRepository } from "../repositories/payment-session"
import { PaymentRepository } from "../repositories/payment"
import { RefundRepository } from "../repositories/refund"
import { PaymentProviderRepository } from "../repositories/payment-provider"
import { buildQuery, isString } from "../utils"
import { FindConfig, Selector } from "../types/common"
import {
Cart,
Payment,
@@ -21,12 +15,17 @@ import {
PaymentSessionStatus,
Refund,
} from "../models"
import { FlagRouter } from "../utils/flag-router"
import OrderEditingFeatureFlag from "../loaders/feature-flags/order-editing"
import PaymentService from "./payment"
import { PaymentRepository } from "../repositories/payment"
import { PaymentProviderRepository } from "../repositories/payment-provider"
import { PaymentSessionRepository } from "../repositories/payment-session"
import { RefundRepository } from "../repositories/refund"
import { FindConfig, Selector } from "../types/common"
import { Logger } from "../types/global"
import { CreatePaymentInput, PaymentSessionInput } from "../types/payment"
import { buildQuery, isString } from "../utils"
import { FlagRouter } from "../utils/flag-router"
import { CustomerService } from "./index"
import PaymentService from "./payment"
type PaymentProviderKey = `pp_${string}` | "systemPaymentProviderService"
type InjectedDependencies = {
@@ -414,10 +413,7 @@ export default class PaymentProviderService extends TransactionBaseService {
session.data = data
session.status = status
if (
this.featureFlagRouter_.isFeatureEnabled(OrderEditingFeatureFlag.key) &&
status === PaymentSessionStatus.AUTHORIZED
) {
if (status === PaymentSessionStatus.AUTHORIZED) {
session.payment_authorized_at = new Date()
}