feat: Add basic endpoints and workflows for Store module (#6515)
This commit is contained in:
@@ -8,3 +8,4 @@ export * from "./promotion"
|
||||
export * from "./region"
|
||||
export * from "./user"
|
||||
export * from "./api-key"
|
||||
export * from "./store"
|
||||
|
||||
2
packages/core-flows/src/store/index.ts
Normal file
2
packages/core-flows/src/store/index.ts
Normal file
@@ -0,0 +1,2 @@
|
||||
export * from "./steps"
|
||||
export * from "./workflows"
|
||||
34
packages/core-flows/src/store/steps/create-stores.ts
Normal file
34
packages/core-flows/src/store/steps/create-stores.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||
import { CreateStoreDTO, IStoreModuleService } from "@medusajs/types"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
type CreateStoresStepInput = {
|
||||
stores: CreateStoreDTO[]
|
||||
}
|
||||
|
||||
export const createStoresStepId = "create-stores"
|
||||
export const createStoresStep = createStep(
|
||||
createStoresStepId,
|
||||
async (data: CreateStoresStepInput, { container }) => {
|
||||
const service = container.resolve<IStoreModuleService>(
|
||||
ModuleRegistrationName.STORE
|
||||
)
|
||||
|
||||
const created = await service.create(data.stores)
|
||||
return new StepResponse(
|
||||
created,
|
||||
created.map((store) => store.id)
|
||||
)
|
||||
},
|
||||
async (createdIds, { container }) => {
|
||||
if (!createdIds?.length) {
|
||||
return
|
||||
}
|
||||
|
||||
const service = container.resolve<IStoreModuleService>(
|
||||
ModuleRegistrationName.STORE
|
||||
)
|
||||
|
||||
await service.delete(createdIds)
|
||||
}
|
||||
)
|
||||
27
packages/core-flows/src/store/steps/delete-stores.ts
Normal file
27
packages/core-flows/src/store/steps/delete-stores.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||
import { IStoreModuleService } from "@medusajs/types"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
export const deleteStoresStepId = "delete-stores"
|
||||
export const deleteStoresStep = createStep(
|
||||
deleteStoresStepId,
|
||||
async (ids: string[], { container }) => {
|
||||
const storeModule = container.resolve<IStoreModuleService>(
|
||||
ModuleRegistrationName.STORE
|
||||
)
|
||||
|
||||
await storeModule.softDelete(ids)
|
||||
return new StepResponse(void 0, ids)
|
||||
},
|
||||
async (idsToRestore, { container }) => {
|
||||
if (!idsToRestore?.length) {
|
||||
return
|
||||
}
|
||||
|
||||
const storeModule = container.resolve<IStoreModuleService>(
|
||||
ModuleRegistrationName.STORE
|
||||
)
|
||||
|
||||
await storeModule.restore(idsToRestore)
|
||||
}
|
||||
)
|
||||
3
packages/core-flows/src/store/steps/index.ts
Normal file
3
packages/core-flows/src/store/steps/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export * from "./create-stores"
|
||||
export * from "./delete-stores"
|
||||
export * from "./update-stores"
|
||||
51
packages/core-flows/src/store/steps/update-stores.ts
Normal file
51
packages/core-flows/src/store/steps/update-stores.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||
import {
|
||||
FilterableStoreProps,
|
||||
IStoreModuleService,
|
||||
UpdateStoreDTO,
|
||||
} from "@medusajs/types"
|
||||
import { getSelectsAndRelationsFromObjectArray } from "@medusajs/utils"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
type UpdateStoresStepInput = {
|
||||
selector: FilterableStoreProps
|
||||
update: UpdateStoreDTO
|
||||
}
|
||||
|
||||
export const updateStoresStepId = "update-stores"
|
||||
export const updateStoresStep = createStep(
|
||||
updateStoresStepId,
|
||||
async (data: UpdateStoresStepInput, { container }) => {
|
||||
const service = container.resolve<IStoreModuleService>(
|
||||
ModuleRegistrationName.STORE
|
||||
)
|
||||
|
||||
const { selects, relations } = getSelectsAndRelationsFromObjectArray([
|
||||
data.update,
|
||||
])
|
||||
|
||||
const prevData = await service.list(data.selector, {
|
||||
select: selects,
|
||||
relations,
|
||||
})
|
||||
|
||||
const stores = await service.update(data.selector, data.update)
|
||||
return new StepResponse(stores, prevData)
|
||||
},
|
||||
async (prevData, { container }) => {
|
||||
if (!prevData?.length) {
|
||||
return
|
||||
}
|
||||
|
||||
const service = container.resolve<IStoreModuleService>(
|
||||
ModuleRegistrationName.STORE
|
||||
)
|
||||
|
||||
await service.upsert(
|
||||
prevData.map((r) => ({
|
||||
...r,
|
||||
metadata: r.metadata || undefined,
|
||||
}))
|
||||
)
|
||||
}
|
||||
)
|
||||
13
packages/core-flows/src/store/workflows/create-stores.ts
Normal file
13
packages/core-flows/src/store/workflows/create-stores.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import { StoreDTO, CreateStoreDTO } from "@medusajs/types"
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import { createStoresStep } from "../steps"
|
||||
|
||||
type WorkflowInput = { stores: CreateStoreDTO[] }
|
||||
|
||||
export const createStoresWorkflowId = "create-stores"
|
||||
export const createStoresWorkflow = createWorkflow(
|
||||
createStoresWorkflowId,
|
||||
(input: WorkflowData<WorkflowInput>): WorkflowData<StoreDTO[]> => {
|
||||
return createStoresStep(input)
|
||||
}
|
||||
)
|
||||
12
packages/core-flows/src/store/workflows/delete-stores.ts
Normal file
12
packages/core-flows/src/store/workflows/delete-stores.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import { deleteStoresStep } from "../steps"
|
||||
|
||||
type WorkflowInput = { ids: string[] }
|
||||
|
||||
export const deleteStoresWorkflowId = "delete-stores"
|
||||
export const deleteStoresWorkflow = createWorkflow(
|
||||
deleteStoresWorkflowId,
|
||||
(input: WorkflowData<WorkflowInput>): WorkflowData<void> => {
|
||||
return deleteStoresStep(input.ids)
|
||||
}
|
||||
)
|
||||
3
packages/core-flows/src/store/workflows/index.ts
Normal file
3
packages/core-flows/src/store/workflows/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export * from "./create-stores"
|
||||
export * from "./delete-stores"
|
||||
export * from "./update-stores"
|
||||
18
packages/core-flows/src/store/workflows/update-stores.ts
Normal file
18
packages/core-flows/src/store/workflows/update-stores.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import { StoreDTO, FilterableStoreProps, UpdateStoreDTO } from "@medusajs/types"
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import { updateStoresStep } from "../steps"
|
||||
|
||||
type UpdateStoresStepInput = {
|
||||
selector: FilterableStoreProps
|
||||
update: UpdateStoreDTO
|
||||
}
|
||||
|
||||
type WorkflowInput = UpdateStoresStepInput
|
||||
|
||||
export const updateStoresWorkflowId = "update-stores"
|
||||
export const updateStoresWorkflow = createWorkflow(
|
||||
updateStoresWorkflowId,
|
||||
(input: WorkflowData<WorkflowInput>): WorkflowData<StoreDTO[]> => {
|
||||
return updateStoresStep(input)
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user