feat(user, types): add invite and user properties + migration (#6327)

**What**
- Add invite model 
- Populate user model
This commit is contained in:
Philip Korsholm
2024-02-14 21:58:14 +08:00
committed by GitHub
parent 16927469eb
commit 4d51f095b3
45 changed files with 1751 additions and 100 deletions

View File

@@ -0,0 +1,2 @@
export * from "./steps"
export * from "./workflows"

View 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)
}
)

View 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)
}
)

View File

@@ -0,0 +1,3 @@
export * from "./delete-users"
export * from "./create-users"
export * from "./update-users"

View 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,
}))
)
}
)

View 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)
}
)

View 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)
}
)

View File

@@ -0,0 +1,3 @@
export * from "./delete-users"
export * from "./create-users"
export * from "./update-users"

View 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)
}
)