feat(medusa, types, core-flows): Add invite endpoints for api-v2 (#6395)

**What**
- Add invite endpoints for simple operations on invites
This commit is contained in:
Philip Korsholm
2024-02-14 23:33:26 +08:00
committed by GitHub
parent 1ed5f918c3
commit 02c53ec93f
26 changed files with 649 additions and 9 deletions

View File

@@ -1,10 +1,11 @@
import { User } from "@models"
import { Invite, User } from "@models"
import { MapToConfig } from "@medusajs/utils"
import { ModuleJoinerConfig } from "@medusajs/types"
import { Modules } from "@medusajs/modules-sdk"
export const LinkableKeys = {
user_id: User.name,
invite_id: Invite.name,
}
const entityLinkableKeysMap: MapToConfig = {}
@@ -22,10 +23,19 @@ export const joinerConfig: ModuleJoinerConfig = {
serviceName: Modules.USER,
primaryKeys: ["id"],
linkableKeys: LinkableKeys,
alias: {
name: ["user", "users"],
args: {
entity: User.name,
alias: [
{
name: ["user", "users"],
args: {
entity: User.name,
},
},
},
{
name: ["invite", "invites"],
args: {
entity: Invite.name,
methodSuffix: "Invites",
},
},
],
}

View File

@@ -130,7 +130,7 @@ export default class UserModuleService<
): Promise<UserTypes.InviteDTO | UserTypes.InviteDTO[]> {
const input = Array.isArray(data) ? data : [data]
const invites = await this.inviteService_.create(input, sharedContext)
const invites = await this.createInvites_(input, sharedContext)
const serializedInvites = await this.baseRepository_.serialize<
UserTypes.InviteDTO[] | UserTypes.InviteDTO
@@ -141,6 +141,25 @@ export default class UserModuleService<
return Array.isArray(data) ? serializedInvites : serializedInvites[0]
}
@InjectTransactionManager("baseRepository_")
private async createInvites_(
data: UserTypes.CreateInviteDTO[],
@MedusaContext() sharedContext: Context = {}
): Promise<TInvite[]> {
// expiration date in 10 days
const expirationDate = new Date().setDate(new Date().getDate() + 10)
const toCreate = data.map((invite) => {
return {
...invite,
expires_at: new Date(expirationDate),
token: "placeholder", // TODO: generate token
}
})
return await this.inviteService_.create(toCreate)
}
updateInvites(
data: UserTypes.UpdateInviteDTO[],
sharedContext?: Context