feat(api-key): Add the endpoints and workflows for api key module

This commit is contained in:
Stevche Radevski
2024-02-23 11:01:08 +01:00
parent d9636f4631
commit 0582545065
27 changed files with 779 additions and 42 deletions
+2
View File
@@ -0,0 +1,2 @@
export * from "./steps"
export * from "./workflows"
@@ -0,0 +1,33 @@
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
import { CreateApiKeyDTO, IApiKeyModuleService } from "@medusajs/types"
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
type CreateApiKeysStepInput = {
apiKeysData: CreateApiKeyDTO[]
}
export const createApiKeysStepId = "create-api-keys"
export const createApiKeysStep = createStep(
createApiKeysStepId,
async (data: CreateApiKeysStepInput, { container }) => {
const service = container.resolve<IApiKeyModuleService>(
ModuleRegistrationName.API_KEY
)
const created = await service.create(data.apiKeysData)
return new StepResponse(
created,
created.map((apiKey) => apiKey.id)
)
},
async (createdIds, { container }) => {
if (!createdIds?.length) {
return
}
const service = container.resolve<IApiKeyModuleService>(
ModuleRegistrationName.API_KEY
)
await service.delete(createdIds)
}
)
@@ -0,0 +1,17 @@
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
import { IApiKeyModuleService } from "@medusajs/types"
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
export const deleteApiKeysStepId = "delete-api-keys"
export const deleteApiKeysStep = createStep(
{ name: deleteApiKeysStepId, noCompensation: true },
async (ids: string[], { container }) => {
const service = container.resolve<IApiKeyModuleService>(
ModuleRegistrationName.API_KEY
)
await service.delete(ids)
return new StepResponse(void 0)
},
async () => {}
)
@@ -0,0 +1,4 @@
export * from "./create-api-keys"
export * from "./delete-api-keys"
export * from "./update-api-keys"
export * from "./revoke-api-keys"
@@ -0,0 +1,27 @@
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
import {
FilterableApiKeyProps,
IApiKeyModuleService,
RevokeApiKeyDTO,
} from "@medusajs/types"
import { getSelectsAndRelationsFromObjectArray } from "@medusajs/utils"
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
type RevokeApiKeysStepInput = {
selector: FilterableApiKeyProps
revoke: Omit<RevokeApiKeyDTO, "id">
}
export const revokeApiKeysStepId = "revoke-api-keys"
export const revokeApiKeysStep = createStep(
{ name: revokeApiKeysStepId, noCompensation: true },
async (data: RevokeApiKeysStepInput, { container }) => {
const service = container.resolve<IApiKeyModuleService>(
ModuleRegistrationName.API_KEY
)
const apiKeys = await service.revoke(data.selector, data.revoke)
return new StepResponse(apiKeys)
},
async () => {}
)
@@ -0,0 +1,51 @@
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
import {
FilterableApiKeyProps,
IApiKeyModuleService,
UpdateApiKeyDTO,
} from "@medusajs/types"
import { getSelectsAndRelationsFromObjectArray } from "@medusajs/utils"
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
type UpdateApiKeysStepInput = {
selector: FilterableApiKeyProps
update: Omit<UpdateApiKeyDTO, "id">
}
export const updateApiKeysStepId = "update-api-keys"
export const updateApiKeysStep = createStep(
updateApiKeysStepId,
async (data: UpdateApiKeysStepInput, { container }) => {
const service = container.resolve<IApiKeyModuleService>(
ModuleRegistrationName.API_KEY
)
const { selects, relations } = getSelectsAndRelationsFromObjectArray([
data.update,
])
const prevData = await service.list(data.selector, {
select: selects,
relations,
})
const apiKeys = await service.update(data.selector, data.update)
return new StepResponse(apiKeys, prevData)
},
async (prevData, { container }) => {
if (!prevData?.length) {
return
}
const service = container.resolve<IApiKeyModuleService>(
ModuleRegistrationName.API_KEY
)
await service.update(
prevData.map((r) => ({
id: r.id,
title: r.title,
}))
)
}
)
@@ -0,0 +1,13 @@
import { ApiKeyDTO, CreateApiKeyDTO } from "@medusajs/types"
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { createApiKeysStep } from "../steps"
type WorkflowInput = { apiKeysData: CreateApiKeyDTO[] }
export const createApiKeysWorkflowId = "create-api-keys"
export const createApiKeysWorkflow = createWorkflow(
createApiKeysWorkflowId,
(input: WorkflowData<WorkflowInput>): WorkflowData<ApiKeyDTO[]> => {
return createApiKeysStep(input)
}
)
@@ -0,0 +1,12 @@
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { deleteApiKeysStep } from "../steps"
type WorkflowInput = { ids: string[] }
export const deleteApiKeysWorkflowId = "delete-api-keys"
export const deleteApiKeysWorkflow = createWorkflow(
deleteApiKeysWorkflowId,
(input: WorkflowData<WorkflowInput>): WorkflowData<void> => {
return deleteApiKeysStep(input.ids)
}
)
@@ -0,0 +1,4 @@
export * from "./create-api-keys"
export * from "./delete-api-keys"
export * from "./update-api-keys"
export * from "./revoke-api-keys"
@@ -0,0 +1,22 @@
import {
ApiKeyDTO,
FilterableApiKeyProps,
RevokeApiKeyDTO,
} from "@medusajs/types"
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { revokeApiKeysStep } from "../steps"
type RevokeApiKeysStepInput = {
selector: FilterableApiKeyProps
revoke: Omit<RevokeApiKeyDTO, "id">
}
type WorkflowInput = RevokeApiKeysStepInput
export const revokeApiKeysWorkflowId = "revoke-api-keys"
export const revokeApiKeysWorkflow = createWorkflow(
revokeApiKeysWorkflowId,
(input: WorkflowData<WorkflowInput>): WorkflowData<ApiKeyDTO[]> => {
return revokeApiKeysStep(input)
}
)
@@ -0,0 +1,22 @@
import {
ApiKeyDTO,
FilterableApiKeyProps,
UpdateApiKeyDTO,
} from "@medusajs/types"
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { updateApiKeysStep } from "../steps"
type UpdateApiKeysStepInput = {
selector: FilterableApiKeyProps
update: Omit<UpdateApiKeyDTO, "id">
}
type WorkflowInput = UpdateApiKeysStepInput
export const updateApiKeysWorkflowId = "update-api-keys"
export const updateApiKeysWorkflow = createWorkflow(
updateApiKeysWorkflowId,
(input: WorkflowData<WorkflowInput>): WorkflowData<ApiKeyDTO[]> => {
return updateApiKeysStep(input)
}
)