feat(user, types): add invite and user properties + migration (#6327)
**What** - Add invite model - Populate user model
This commit is contained in:
2
packages/core-flows/src/user/index.ts
Normal file
2
packages/core-flows/src/user/index.ts
Normal file
@@ -0,0 +1,2 @@
|
||||
export * from "./steps"
|
||||
export * from "./workflows"
|
||||
22
packages/core-flows/src/user/steps/create-users.ts
Normal file
22
packages/core-flows/src/user/steps/create-users.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||
import { CreateUserDTO, IUserModuleService } from "@medusajs/types"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
export const createUsersStepId = "create-users-step"
|
||||
export const createUsersStep = createStep(
|
||||
createUsersStepId,
|
||||
async (input: CreateUserDTO[], { container }) => {
|
||||
const service: IUserModuleService = container.resolve(
|
||||
ModuleRegistrationName.USER
|
||||
)
|
||||
const users = await service.create(input)
|
||||
return new StepResponse(users)
|
||||
},
|
||||
async (createdUsers, { container }) => {
|
||||
if (!createdUsers?.length) {
|
||||
return
|
||||
}
|
||||
const service = container.resolve(ModuleRegistrationName.USER)
|
||||
await service.delete(createdUsers)
|
||||
}
|
||||
)
|
||||
28
packages/core-flows/src/user/steps/delete-users.ts
Normal file
28
packages/core-flows/src/user/steps/delete-users.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||
import { IUserModuleService } from "@medusajs/types"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
export const deleteUsersStepId = "delete-users-step"
|
||||
export const deleteUsersStep = createStep(
|
||||
deleteUsersStepId,
|
||||
async (input: string[], { container }) => {
|
||||
const service: IUserModuleService = container.resolve(
|
||||
ModuleRegistrationName.USER
|
||||
)
|
||||
|
||||
await service.softDelete(input)
|
||||
|
||||
return new StepResponse(void 0, input)
|
||||
},
|
||||
async (prevUserIds, { container }) => {
|
||||
if (!prevUserIds?.length) {
|
||||
return
|
||||
}
|
||||
|
||||
const service: IUserModuleService = container.resolve(
|
||||
ModuleRegistrationName.USER
|
||||
)
|
||||
|
||||
await service.restore(prevUserIds)
|
||||
}
|
||||
)
|
||||
3
packages/core-flows/src/user/steps/index.ts
Normal file
3
packages/core-flows/src/user/steps/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export * from "./delete-users"
|
||||
export * from "./create-users"
|
||||
export * from "./update-users"
|
||||
42
packages/core-flows/src/user/steps/update-users.ts
Normal file
42
packages/core-flows/src/user/steps/update-users.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||
import { IUserModuleService, UpdateUserDTO } from "@medusajs/types"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
export const updateUsersStepId = "update-users-step"
|
||||
export const updateUsersStep = createStep(
|
||||
updateUsersStepId,
|
||||
async (input: UpdateUserDTO[], { container }) => {
|
||||
const service: IUserModuleService = container.resolve(
|
||||
ModuleRegistrationName.USER
|
||||
)
|
||||
|
||||
if (!input.length) {
|
||||
return new StepResponse([], [])
|
||||
}
|
||||
|
||||
const originalUsers = await service.list({
|
||||
id: input.map((u) => u.id),
|
||||
})
|
||||
|
||||
const users = await service.update(input)
|
||||
return new StepResponse(users, originalUsers)
|
||||
},
|
||||
async (originalUsers, { container }) => {
|
||||
if (!originalUsers?.length) {
|
||||
return
|
||||
}
|
||||
|
||||
const service = container.resolve(ModuleRegistrationName.USER)
|
||||
|
||||
await service.update(
|
||||
originalUsers.map((u) => ({
|
||||
id: u.id,
|
||||
first_name: u.first_name,
|
||||
last_name: u.last_name,
|
||||
email: u.email,
|
||||
avatar_url: u.avatar_url,
|
||||
metadata: u.metadata,
|
||||
}))
|
||||
)
|
||||
}
|
||||
)
|
||||
14
packages/core-flows/src/user/workflows/create-users.ts
Normal file
14
packages/core-flows/src/user/workflows/create-users.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { CreateUserDTO, UserDTO } from "@medusajs/types"
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import { createUsersStep } from "../steps"
|
||||
import { UserWorkflow } from "@medusajs/types"
|
||||
|
||||
export const createUsersWorkflowId = "create-users-workflow"
|
||||
export const createUsersWorkflow = createWorkflow(
|
||||
createUsersWorkflowId,
|
||||
(
|
||||
input: WorkflowData<UserWorkflow.CreateUsersWorkflowInputDTO>
|
||||
): WorkflowData<UserDTO[]> => {
|
||||
return createUsersStep(input.users)
|
||||
}
|
||||
)
|
||||
13
packages/core-flows/src/user/workflows/delete-users.ts
Normal file
13
packages/core-flows/src/user/workflows/delete-users.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import { deleteUsersStep } from "../steps"
|
||||
import { UserWorkflow } from "@medusajs/types"
|
||||
|
||||
export const deleteUsersWorkflowId = "delete-user"
|
||||
export const deleteUsersWorkflow = createWorkflow(
|
||||
deleteUsersWorkflowId,
|
||||
(
|
||||
input: WorkflowData<UserWorkflow.DeleteUserWorkflowInput>
|
||||
): WorkflowData<void> => {
|
||||
return deleteUsersStep(input.ids)
|
||||
}
|
||||
)
|
||||
3
packages/core-flows/src/user/workflows/index.ts
Normal file
3
packages/core-flows/src/user/workflows/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export * from "./delete-users"
|
||||
export * from "./create-users"
|
||||
export * from "./update-users"
|
||||
14
packages/core-flows/src/user/workflows/update-users.ts
Normal file
14
packages/core-flows/src/user/workflows/update-users.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { UserDTO } from "@medusajs/types"
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import { updateUsersStep } from "../steps"
|
||||
import { UserWorkflow } from "@medusajs/types"
|
||||
|
||||
export const updateUsersWorkflowId = "update-users-workflow"
|
||||
export const updateUsersWorkflow = createWorkflow(
|
||||
updateUsersWorkflowId,
|
||||
(
|
||||
input: WorkflowData<UserWorkflow.UpdateUsersWorkflowInputDTO>
|
||||
): WorkflowData<UserDTO[]> => {
|
||||
return updateUsersStep(input.updates)
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user