chore: Abstract module service (#6188)
**What**
- Remove services that do not have any custom business and replace them with a simple interfaces
- Abstract module service provide the following base implementation
- retrieve
- list
- listAndCount
- delete
- softDelete
- restore
The above methods are created for the main model and also for each other models for which a config is provided
all method such as list, listAndCount, delete, softDelete and restore are pluralized with the model it refers to
**Migration**
- [x] product
- [x] pricing
- [x] promotion
- [x] cart
- [x] auth
- [x] customer
- [x] payment
- [x] Sales channel
- [x] Workflow-*
**Usage**
**Module**
The module service can now extend the ` ModulesSdkUtils.abstractModuleServiceFactory` which returns a class with the default implementation for each method and each model following the standard naming convention mentioned above.
This factory have 3 template arguments being the container, the main model DTO and an object representing the other model with a config object that contains at list the DTO and optionally a singular and plural property in case it needs to be set manually. It looks like the following:
```ts
export default class PricingModuleService</* ... */>
extends ModulesSdkUtils.abstractModuleServiceFactory<
InjectedDependencies,
PricingTypes.PriceSetDTO,
{
Currency: { dto: PricingTypes.CurrencyDTO }
MoneyAmount: { dto: PricingTypes.MoneyAmountDTO }
PriceSetMoneyAmount: { dto: PricingTypes.PriceSetMoneyAmountDTO }
PriceSetMoneyAmountRules: {
dto: PricingTypes.PriceSetMoneyAmountRulesDTO
}
PriceRule: { dto: PricingTypes.PriceRuleDTO }
RuleType: { dto: PricingTypes.RuleTypeDTO }
PriceList: { dto: PricingTypes.PriceListDTO }
PriceListRule: { dto: PricingTypes.PriceListRuleDTO }
}
>(PriceSet, generateMethodForModels, entityNameToLinkableKeysMap)
implements PricingTypes.IPricingModuleService
{
// ...
}
```
In the above, the singular and plural can be inferred as there is no tricky naming. Also, the default implementation does not remove the fact that you need to provides all the overloads etc in your module service interface. The above will provide a default implementation following the interface `AbstractModuleService` which is also auto generated, hence you will have the following methods available:
**for the main model**
- list
- retrieve
- listAndCount
- delete
- softDelete
- restore
**for the other models**
- list**MyModels**
- retrieve**MyModel**
- listAndCount**MyModels**
- delete**MyModels**
- softDelete**MyModels**
- restore**MyModels**
**Internal module service**
The internal module service can now extend `ModulesSdkUtils.internalModuleServiceFactory` which takes only one template argument which is the container type.
All internal services provides a default implementation for all retrieve, list, listAndCount, create, update, delete, softDelete, restore methods which follow the following interface `ModulesSdkTypes.InternalModuleService`:
```ts
export interface InternalModuleService<
TEntity extends {},
TContainer extends object = object
> {
get __container__(): TContainer
retrieve(
idOrObject: string,
config?: FindConfig<any>,
sharedContext?: Context
): Promise<TEntity>
retrieve(
idOrObject: object,
config?: FindConfig<any>,
sharedContext?: Context
): Promise<TEntity>
list(
filters?: FilterQuery<any> | BaseFilterable<FilterQuery<any>>,
config?: FindConfig<any>,
sharedContext?: Context
): Promise<TEntity[]>
listAndCount(
filters?: FilterQuery<any> | BaseFilterable<FilterQuery<any>>,
config?: FindConfig<any>,
sharedContext?: Context
): Promise<[TEntity[], number]>
create(data: any[], sharedContext?: Context): Promise<TEntity[]>
create(data: any, sharedContext?: Context): Promise<TEntity>
update(data: any[], sharedContext?: Context): Promise<TEntity[]>
update(data: any, sharedContext?: Context): Promise<TEntity>
update(
selectorAndData: {
selector: FilterQuery<any> | BaseFilterable<FilterQuery<any>>
data: any
},
sharedContext?: Context
): Promise<TEntity[]>
update(
selectorAndData: {
selector: FilterQuery<any> | BaseFilterable<FilterQuery<any>>
data: any
}[],
sharedContext?: Context
): Promise<TEntity[]>
delete(idOrSelector: string, sharedContext?: Context): Promise<void>
delete(idOrSelector: string[], sharedContext?: Context): Promise<void>
delete(idOrSelector: object, sharedContext?: Context): Promise<void>
delete(idOrSelector: object[], sharedContext?: Context): Promise<void>
delete(
idOrSelector: {
selector: FilterQuery<any> | BaseFilterable<FilterQuery<any>>
},
sharedContext?: Context
): Promise<void>
softDelete(
idsOrFilter: string[] | InternalFilterQuery,
sharedContext?: Context
): Promise<[TEntity[], Record<string, unknown[]>]>
restore(
idsOrFilter: string[] | InternalFilterQuery,
sharedContext?: Context
): Promise<[TEntity[], Record<string, unknown[]>]>
upsert(data: any[], sharedContext?: Context): Promise<TEntity[]>
upsert(data: any, sharedContext?: Context): Promise<TEntity>
}
```
When a service is auto generated you can use that interface to type your class property representing the expected internal service.
**Repositories**
The repositories can now extend `DALUtils.mikroOrmBaseRepositoryFactory` which takes one template argument being the entity or the template entity and provides all the default implementation. If the repository is auto generated you can type it using the `RepositoryService` interface. Here is the new interface typings.
```ts
export interface RepositoryService<T = any> extends BaseRepositoryService<T> {
find(options?: FindOptions<T>, context?: Context): Promise<T[]>
findAndCount(
options?: FindOptions<T>,
context?: Context
): Promise<[T[], number]>
create(data: any[], context?: Context): Promise<T[]>
// Becareful here, if you have a custom internal service, the update data should never be the entity otherwise
// both entity and update will point to the same ref and create issues with mikro orm
update(data: { entity; update }[], context?: Context): Promise<T[]>
delete(
idsOrPKs: FilterQuery<T> & BaseFilterable<FilterQuery<T>>,
context?: Context
): Promise<void>
/**
* Soft delete entities and cascade to related entities if configured.
*
* @param idsOrFilter
* @param context
*
* @returns [T[], Record<string, string[]>] the second value being the map of the entity names and ids that were soft deleted
*/
softDelete(
idsOrFilter: string[] | InternalFilterQuery,
context?: Context
): Promise<[T[], Record<string, unknown[]>]>
restore(
idsOrFilter: string[] | InternalFilterQuery,
context?: Context
): Promise<[T[], Record<string, unknown[]>]>
upsert(data: any[], context?: Context): Promise<T[]>
}
```
This commit is contained in:
committed by
GitHub
parent
abc30517cb
commit
a7be5d7b6d
@@ -1,10 +1,11 @@
|
||||
import { AbstractAuthModuleProvider, MedusaError } from "@medusajs/utils"
|
||||
import {
|
||||
AuthProviderScope,
|
||||
AuthenticationInput,
|
||||
AuthenticationResponse,
|
||||
AuthProviderScope,
|
||||
ModulesSdkTypes,
|
||||
} from "@medusajs/types"
|
||||
import { AuthProviderService, AuthUserService } from "@services"
|
||||
import { AuthUserService } from "@services"
|
||||
import jwt, { JwtPayload } from "jsonwebtoken"
|
||||
|
||||
import { AuthorizationCode } from "simple-oauth2"
|
||||
@@ -12,7 +13,7 @@ import url from "url"
|
||||
|
||||
type InjectedDependencies = {
|
||||
authUserService: AuthUserService
|
||||
authProviderService: AuthProviderService
|
||||
authProviderService: ModulesSdkTypes.InternalModuleService<any>
|
||||
}
|
||||
|
||||
type ProviderConfig = {
|
||||
@@ -25,13 +26,13 @@ class GoogleProvider extends AbstractAuthModuleProvider {
|
||||
public static PROVIDER = "google"
|
||||
public static DISPLAY_NAME = "Google Authentication"
|
||||
|
||||
protected readonly authUserSerivce_: AuthUserService
|
||||
protected readonly authProviderService_: AuthProviderService
|
||||
protected readonly authUserService_: AuthUserService
|
||||
protected readonly authProviderService_: ModulesSdkTypes.InternalModuleService<any>
|
||||
|
||||
constructor({ authUserService, authProviderService }: InjectedDependencies) {
|
||||
super(arguments[0])
|
||||
|
||||
this.authUserSerivce_ = authUserService
|
||||
this.authUserService_ = authUserService
|
||||
this.authProviderService_ = authProviderService
|
||||
}
|
||||
|
||||
@@ -89,13 +90,13 @@ class GoogleProvider extends AbstractAuthModuleProvider {
|
||||
let authUser
|
||||
|
||||
try {
|
||||
authUser = await this.authUserSerivce_.retrieveByProviderAndEntityId(
|
||||
authUser = await this.authUserService_.retrieveByProviderAndEntityId(
|
||||
entity_id,
|
||||
GoogleProvider.PROVIDER
|
||||
)
|
||||
} catch (error) {
|
||||
if (error.type === MedusaError.Types.NOT_FOUND) {
|
||||
const [createdAuthUser] = await this.authUserSerivce_.create([
|
||||
const [createdAuthUser] = await this.authUserService_.create([
|
||||
{
|
||||
entity_id,
|
||||
provider: GoogleProvider.PROVIDER,
|
||||
|
||||
@@ -1,35 +1,35 @@
|
||||
import jwt from "jsonwebtoken"
|
||||
|
||||
import {
|
||||
AuthenticationInput,
|
||||
AuthenticationResponse,
|
||||
AuthProviderDTO,
|
||||
AuthTypes,
|
||||
AuthUserDTO,
|
||||
AuthenticationInput,
|
||||
AuthenticationResponse,
|
||||
Context,
|
||||
CreateAuthProviderDTO,
|
||||
CreateAuthUserDTO,
|
||||
DAL,
|
||||
FilterableAuthProviderProps,
|
||||
FilterableAuthUserProps,
|
||||
FindConfig,
|
||||
InternalModuleDeclaration,
|
||||
JWTGenerationOptions,
|
||||
MedusaContainer,
|
||||
ModuleJoinerConfig,
|
||||
ModulesSdkTypes,
|
||||
UpdateAuthUserDTO,
|
||||
} from "@medusajs/types"
|
||||
|
||||
import { AuthProvider, AuthUser } from "@models"
|
||||
|
||||
import { entityNameToLinkableKeysMap, joinerConfig } from "../joiner-config"
|
||||
|
||||
import {
|
||||
AbstractAuthModuleProvider,
|
||||
InjectManager,
|
||||
InjectTransactionManager,
|
||||
MedusaContext,
|
||||
MedusaError,
|
||||
ModulesSdkUtils,
|
||||
} from "@medusajs/utils"
|
||||
import { AuthProvider, AuthUser } from "@models"
|
||||
import { AuthProviderService, AuthUserService } from "@services"
|
||||
import { ServiceTypes } from "@types"
|
||||
import { joinerConfig } from "../joiner-config"
|
||||
|
||||
type AuthModuleOptions = {
|
||||
jwt_secret: string
|
||||
@@ -42,28 +42,32 @@ type AuthJWTPayload = {
|
||||
|
||||
type InjectedDependencies = {
|
||||
baseRepository: DAL.RepositoryService
|
||||
authUserService: AuthUserService<any>
|
||||
authProviderService: AuthProviderService<any>
|
||||
authUserService: ModulesSdkTypes.InternalModuleService<any>
|
||||
authProviderService: ModulesSdkTypes.InternalModuleService<any>
|
||||
}
|
||||
|
||||
export default class AuthModuleService<
|
||||
TAuthUser extends AuthUser = AuthUser,
|
||||
TAuthProvider extends AuthProvider = AuthProvider
|
||||
> implements AuthTypes.IAuthModuleService
|
||||
{
|
||||
__joinerConfig(): ModuleJoinerConfig {
|
||||
return joinerConfig
|
||||
}
|
||||
const generateMethodForModels = [AuthProvider, AuthUser]
|
||||
|
||||
export default class AuthModuleService<
|
||||
TAuthUser extends AuthUser = AuthUser,
|
||||
TAuthProvider extends AuthProvider = AuthProvider
|
||||
>
|
||||
extends ModulesSdkUtils.abstractModuleServiceFactory<
|
||||
InjectedDependencies,
|
||||
AuthTypes.AuthProviderDTO,
|
||||
{
|
||||
AuthUser: { dto: AuthUserDTO }
|
||||
AuthProvider: { dto: AuthProviderDTO }
|
||||
}
|
||||
>(AuthProvider, generateMethodForModels, entityNameToLinkableKeysMap)
|
||||
implements AuthTypes.IAuthModuleService
|
||||
{
|
||||
__hooks = {
|
||||
onApplicationStart: async () => await this.createProvidersOnLoad(),
|
||||
}
|
||||
|
||||
protected __container__: MedusaContainer
|
||||
protected baseRepository_: DAL.RepositoryService
|
||||
|
||||
protected authUserService_: AuthUserService<TAuthUser>
|
||||
protected authProviderService_: AuthProviderService<TAuthProvider>
|
||||
protected authUserService_: ModulesSdkTypes.InternalModuleService<TAuthUser>
|
||||
protected authProviderService_: ModulesSdkTypes.InternalModuleService<TAuthProvider>
|
||||
protected options_: AuthModuleOptions
|
||||
|
||||
constructor(
|
||||
@@ -75,66 +79,17 @@ export default class AuthModuleService<
|
||||
options: AuthModuleOptions,
|
||||
protected readonly moduleDeclaration: InternalModuleDeclaration
|
||||
) {
|
||||
this.__container__ = arguments[0]
|
||||
// @ts-ignore
|
||||
super(...arguments)
|
||||
|
||||
this.baseRepository_ = baseRepository
|
||||
this.authUserService_ = authUserService
|
||||
this.authProviderService_ = authProviderService
|
||||
this.options_ = options
|
||||
}
|
||||
|
||||
async retrieveAuthProvider(
|
||||
provider: string,
|
||||
config: FindConfig<AuthProviderDTO> = {},
|
||||
@MedusaContext() sharedContext: Context = {}
|
||||
): Promise<AuthProviderDTO> {
|
||||
const authProvider = await this.authProviderService_.retrieve(
|
||||
provider,
|
||||
config,
|
||||
sharedContext
|
||||
)
|
||||
|
||||
return await this.baseRepository_.serialize<AuthTypes.AuthProviderDTO>(
|
||||
authProvider,
|
||||
{ populate: true }
|
||||
)
|
||||
}
|
||||
|
||||
async listAuthProviders(
|
||||
filters: FilterableAuthProviderProps = {},
|
||||
config: FindConfig<AuthProviderDTO> = {},
|
||||
@MedusaContext() sharedContext: Context = {}
|
||||
): Promise<AuthProviderDTO[]> {
|
||||
const authProviders = await this.authProviderService_.list(
|
||||
filters,
|
||||
config,
|
||||
sharedContext
|
||||
)
|
||||
|
||||
return await this.baseRepository_.serialize<AuthTypes.AuthProviderDTO[]>(
|
||||
authProviders,
|
||||
{ populate: true }
|
||||
)
|
||||
}
|
||||
|
||||
@InjectManager("baseRepository_")
|
||||
async listAndCountAuthProviders(
|
||||
filters: FilterableAuthProviderProps = {},
|
||||
config: FindConfig<AuthProviderDTO>,
|
||||
@MedusaContext() sharedContext: Context = {}
|
||||
): Promise<[AuthTypes.AuthProviderDTO[], number]> {
|
||||
const [authProviders, count] = await this.authProviderService_.listAndCount(
|
||||
filters,
|
||||
config,
|
||||
sharedContext
|
||||
)
|
||||
|
||||
return [
|
||||
await this.baseRepository_.serialize<AuthTypes.AuthProviderDTO[]>(
|
||||
authProviders,
|
||||
{ populate: true }
|
||||
),
|
||||
count,
|
||||
]
|
||||
__joinerConfig(): ModuleJoinerConfig {
|
||||
return joinerConfig
|
||||
}
|
||||
|
||||
async generateJwtToken(
|
||||
@@ -205,18 +160,11 @@ export default class AuthModuleService<
|
||||
return Array.isArray(data) ? serializedProviders : serializedProviders[0]
|
||||
}
|
||||
|
||||
@InjectTransactionManager("baseRepository_")
|
||||
protected async createAuthProviders_(
|
||||
data: any[],
|
||||
@MedusaContext() sharedContext: Context
|
||||
): Promise<TAuthProvider[]> {
|
||||
return await this.authProviderService_.create(data, sharedContext)
|
||||
}
|
||||
|
||||
updateAuthProvider(
|
||||
data: AuthTypes.UpdateAuthProviderDTO[],
|
||||
sharedContext?: Context
|
||||
): Promise<AuthProviderDTO[]>
|
||||
|
||||
updateAuthProvider(
|
||||
data: AuthTypes.UpdateAuthProviderDTO,
|
||||
sharedContext?: Context
|
||||
@@ -247,78 +195,11 @@ export default class AuthModuleService<
|
||||
return await this.authProviderService_.update(data, sharedContext)
|
||||
}
|
||||
|
||||
@InjectTransactionManager("baseRepository_")
|
||||
async deleteAuthProvider(
|
||||
ids: string[],
|
||||
@MedusaContext() sharedContext: Context = {}
|
||||
): Promise<void> {
|
||||
await this.authProviderService_.delete(ids, sharedContext)
|
||||
}
|
||||
|
||||
@InjectManager("baseRepository_")
|
||||
async retrieveAuthUser(
|
||||
id: string,
|
||||
config: FindConfig<AuthUserDTO> = {},
|
||||
@MedusaContext() sharedContext: Context = {}
|
||||
): Promise<AuthUserDTO> {
|
||||
const authUser = await this.authUserService_.retrieve(
|
||||
id,
|
||||
config,
|
||||
sharedContext
|
||||
)
|
||||
|
||||
return await this.baseRepository_.serialize<AuthTypes.AuthUserDTO>(
|
||||
authUser,
|
||||
{
|
||||
exclude: ["password_hash"],
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@InjectManager("baseRepository_")
|
||||
async listAuthUsers(
|
||||
filters: FilterableAuthUserProps = {},
|
||||
config: FindConfig<AuthUserDTO> = {},
|
||||
@MedusaContext() sharedContext: Context = {}
|
||||
): Promise<AuthUserDTO[]> {
|
||||
const authUsers = await this.authUserService_.list(
|
||||
filters,
|
||||
config,
|
||||
sharedContext
|
||||
)
|
||||
|
||||
return await this.baseRepository_.serialize<AuthTypes.AuthUserDTO[]>(
|
||||
authUsers,
|
||||
{
|
||||
populate: true,
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@InjectManager("baseRepository_")
|
||||
async listAndCountAuthUsers(
|
||||
filters: FilterableAuthUserProps = {},
|
||||
config: FindConfig<AuthUserDTO> = {},
|
||||
@MedusaContext() sharedContext: Context = {}
|
||||
): Promise<[AuthUserDTO[], number]> {
|
||||
const [authUsers, count] = await this.authUserService_.listAndCount(
|
||||
filters,
|
||||
config,
|
||||
sharedContext
|
||||
)
|
||||
|
||||
return [
|
||||
await this.baseRepository_.serialize<AuthTypes.AuthUserDTO[]>(authUsers, {
|
||||
populate: true,
|
||||
}),
|
||||
count,
|
||||
]
|
||||
}
|
||||
|
||||
createAuthUser(
|
||||
data: CreateAuthUserDTO[],
|
||||
sharedContext?: Context
|
||||
): Promise<AuthUserDTO[]>
|
||||
|
||||
createAuthUser(
|
||||
data: CreateAuthUserDTO,
|
||||
sharedContext?: Context
|
||||
@@ -342,23 +223,17 @@ export default class AuthModuleService<
|
||||
return Array.isArray(data) ? serializedUsers : serializedUsers[0]
|
||||
}
|
||||
|
||||
@InjectTransactionManager("baseRepository_")
|
||||
protected async createAuthUsers_(
|
||||
data: CreateAuthUserDTO[],
|
||||
@MedusaContext() sharedContext: Context
|
||||
): Promise<TAuthUser[]> {
|
||||
return await this.authUserService_.create(data, sharedContext)
|
||||
}
|
||||
|
||||
updateAuthUser(
|
||||
data: UpdateAuthUserDTO[],
|
||||
sharedContext?: Context
|
||||
): Promise<AuthUserDTO[]>
|
||||
|
||||
updateAuthUser(
|
||||
data: UpdateAuthUserDTO,
|
||||
sharedContext?: Context
|
||||
): Promise<AuthUserDTO>
|
||||
|
||||
// TODO: should be pluralized, see convention about the methods naming or the abstract module service interface definition @engineering
|
||||
@InjectManager("baseRepository_")
|
||||
async updateAuthUser(
|
||||
data: UpdateAuthUserDTO | UpdateAuthUserDTO[],
|
||||
@@ -385,14 +260,6 @@ export default class AuthModuleService<
|
||||
return await this.authUserService_.update(data, sharedContext)
|
||||
}
|
||||
|
||||
@InjectTransactionManager("baseRepository_")
|
||||
async deleteAuthUser(
|
||||
ids: string[],
|
||||
@MedusaContext() sharedContext: Context = {}
|
||||
): Promise<void> {
|
||||
await this.authUserService_.delete(ids, sharedContext)
|
||||
}
|
||||
|
||||
protected getRegisteredAuthenticationProvider(
|
||||
provider: string,
|
||||
{ authScope }: AuthenticationInput
|
||||
@@ -448,6 +315,22 @@ export default class AuthModuleService<
|
||||
}
|
||||
}
|
||||
|
||||
@InjectTransactionManager("baseRepository_")
|
||||
protected async createAuthProviders_(
|
||||
data: any[],
|
||||
@MedusaContext() sharedContext: Context
|
||||
): Promise<TAuthProvider[]> {
|
||||
return await this.authProviderService_.create(data, sharedContext)
|
||||
}
|
||||
|
||||
@InjectTransactionManager("baseRepository_")
|
||||
protected async createAuthUsers_(
|
||||
data: CreateAuthUserDTO[],
|
||||
@MedusaContext() sharedContext: Context
|
||||
): Promise<TAuthUser[]> {
|
||||
return await this.authUserService_.create(data, sharedContext)
|
||||
}
|
||||
|
||||
private async createProvidersOnLoad() {
|
||||
const providersToLoad = this.__container__["auth_providers"]
|
||||
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
import { DAL } from "@medusajs/types"
|
||||
import { ModulesSdkUtils } from "@medusajs/utils"
|
||||
import { AuthProvider } from "@models"
|
||||
|
||||
import { ServiceTypes } from "@types"
|
||||
|
||||
type InjectedDependencies = {
|
||||
authProviderRepository: DAL.RepositoryService
|
||||
}
|
||||
|
||||
export default class AuthProviderService<
|
||||
TEntity extends AuthProvider = AuthProvider
|
||||
> extends ModulesSdkUtils.abstractServiceFactory<
|
||||
InjectedDependencies,
|
||||
{
|
||||
create: ServiceTypes.CreateAuthProviderDTO
|
||||
update: ServiceTypes.UpdateAuthProviderDTO
|
||||
}
|
||||
>(AuthProvider)<TEntity> {
|
||||
constructor(container: InjectedDependencies) {
|
||||
// @ts-ignore
|
||||
super(...arguments)
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,10 @@
|
||||
import { AuthTypes, Context, DAL, FindConfig } from "@medusajs/types"
|
||||
import {
|
||||
AuthTypes,
|
||||
Context,
|
||||
DAL,
|
||||
FindConfig,
|
||||
RepositoryService,
|
||||
} from "@medusajs/types"
|
||||
import {
|
||||
InjectManager,
|
||||
MedusaContext,
|
||||
@@ -6,7 +12,6 @@ import {
|
||||
ModulesSdkUtils,
|
||||
} from "@medusajs/utils"
|
||||
import { AuthUser } from "@models"
|
||||
import { ServiceTypes, RepositoryTypes } from "@types"
|
||||
|
||||
type InjectedDependencies = {
|
||||
authUserRepository: DAL.RepositoryService
|
||||
@@ -14,13 +19,11 @@ type InjectedDependencies = {
|
||||
|
||||
export default class AuthUserService<
|
||||
TEntity extends AuthUser = AuthUser
|
||||
> extends ModulesSdkUtils.abstractServiceFactory<
|
||||
InjectedDependencies,
|
||||
{
|
||||
create: ServiceTypes.CreateAuthUserDTO
|
||||
}
|
||||
>(AuthUser)<TEntity> {
|
||||
protected readonly authUserRepository_: RepositoryTypes.IAuthUserRepository<TEntity>
|
||||
> extends ModulesSdkUtils.internalModuleServiceFactory<InjectedDependencies>(
|
||||
AuthUser
|
||||
)<TEntity> {
|
||||
protected readonly authUserRepository_: RepositoryService<TEntity>
|
||||
|
||||
constructor(container: InjectedDependencies) {
|
||||
// @ts-ignore
|
||||
super(...arguments)
|
||||
@@ -28,9 +31,7 @@ export default class AuthUserService<
|
||||
}
|
||||
|
||||
@InjectManager("authUserRepository_")
|
||||
async retrieveByProviderAndEntityId<
|
||||
TEntityMethod = AuthTypes.AuthUserDTO
|
||||
>(
|
||||
async retrieveByProviderAndEntityId<TEntityMethod = AuthTypes.AuthUserDTO>(
|
||||
entityId: string,
|
||||
provider: string,
|
||||
config: FindConfig<TEntityMethod> = {},
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
export { default as AuthModuleService } from "./auth-module"
|
||||
export { default as AuthProviderService } from "./auth-provider"
|
||||
export { default as AuthUserService } from "./auth-user"
|
||||
|
||||
@@ -1,28 +1,2 @@
|
||||
import { AuthProvider, AuthUser } from "@models"
|
||||
import { CreateAuthProviderDTO, UpdateAuthProviderDTO } from "./auth-provider"
|
||||
import { DAL } from "@medusajs/types"
|
||||
import { CreateAuthUserDTO, UpdateAuthUserDTO } from "./auth-user"
|
||||
|
||||
export * from "./auth-user"
|
||||
export * from "./auth-provider"
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
||||
export interface IAuthProviderRepository<
|
||||
TEntity extends AuthProvider = AuthProvider
|
||||
> extends DAL.RepositoryService<
|
||||
TEntity,
|
||||
{
|
||||
create: CreateAuthProviderDTO
|
||||
update: UpdateAuthProviderDTO
|
||||
}
|
||||
> {}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
||||
export interface IAuthUserRepository<TEntity extends AuthUser = AuthUser>
|
||||
extends DAL.RepositoryService<
|
||||
TEntity,
|
||||
{
|
||||
create: CreateAuthUserDTO
|
||||
update: UpdateAuthUserDTO
|
||||
}
|
||||
> {}
|
||||
|
||||
Reference in New Issue
Block a user