chore: Hide repository creation if they are not custom + add upsert support by default (#6127)
This commit is contained in:
committed by
GitHub
parent
8a8a7183b8
commit
5e655dd59b
@@ -1,7 +1,22 @@
|
||||
import { moduleDefinition } from "./module-definition"
|
||||
import { Modules } from "@medusajs/modules-sdk"
|
||||
import * as Models from "@models"
|
||||
import { ModulesSdkUtils } from "@medusajs/utils"
|
||||
|
||||
export default moduleDefinition
|
||||
|
||||
const migrationScriptOptions = {
|
||||
moduleName: Modules.AUTHENTICATION,
|
||||
models: Models,
|
||||
pathToMigrations: __dirname + "/migrations",
|
||||
}
|
||||
|
||||
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
|
||||
migrationScriptOptions
|
||||
)
|
||||
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
|
||||
migrationScriptOptions
|
||||
)
|
||||
|
||||
export * from "./initialize"
|
||||
export * from "./loaders"
|
||||
export * from "./scripts"
|
||||
|
||||
@@ -1,48 +1,10 @@
|
||||
import * as defaultRepositories from "@repositories"
|
||||
import * as defaultServices from "@services"
|
||||
import { ModulesSdkUtils } from "@medusajs/utils"
|
||||
import * as ModuleModels from "@models"
|
||||
import * as ModuleRepositories from "@repositories"
|
||||
import * as ModuleServices from "@services"
|
||||
|
||||
import { LoaderOptions } from "@medusajs/modules-sdk"
|
||||
import { ModulesSdkTypes } from "@medusajs/types"
|
||||
import { loadCustomRepositories } from "@medusajs/utils"
|
||||
import { asClass } from "awilix"
|
||||
|
||||
export default async ({
|
||||
container,
|
||||
options,
|
||||
}: LoaderOptions<
|
||||
| ModulesSdkTypes.ModuleServiceInitializeOptions
|
||||
| ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions
|
||||
>): Promise<void> => {
|
||||
const customRepositories = (
|
||||
options as ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions
|
||||
)?.repositories
|
||||
|
||||
container.register({
|
||||
authUserService: asClass(defaultServices.AuthUserService).singleton(),
|
||||
authProviderService: asClass(
|
||||
defaultServices.AuthProviderService
|
||||
).singleton(),
|
||||
})
|
||||
|
||||
if (customRepositories) {
|
||||
loadCustomRepositories({
|
||||
defaultRepositories,
|
||||
customRepositories,
|
||||
container,
|
||||
})
|
||||
} else {
|
||||
loadDefaultRepositories({ container })
|
||||
}
|
||||
}
|
||||
|
||||
function loadDefaultRepositories({ container }) {
|
||||
container.register({
|
||||
baseRepository: asClass(defaultRepositories.BaseRepository).singleton(),
|
||||
authUserRepository: asClass(
|
||||
defaultRepositories.AuthUserRepository
|
||||
).singleton(),
|
||||
authProviderRepository: asClass(
|
||||
defaultRepositories.AuthProviderRepository
|
||||
).singleton(),
|
||||
})
|
||||
}
|
||||
export default ModulesSdkUtils.moduleContainerLoaderFactory({
|
||||
moduleModels: ModuleModels,
|
||||
moduleRepositories: ModuleRepositories,
|
||||
moduleServices: ModuleServices,
|
||||
})
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
import { DALUtils } from "@medusajs/utils"
|
||||
|
||||
import { AuthProvider } from "@models"
|
||||
import { RepositoryTypes } from "@types"
|
||||
|
||||
export class AuthProviderRepository extends DALUtils.mikroOrmBaseRepositoryFactory<
|
||||
AuthProvider,
|
||||
{
|
||||
create: RepositoryTypes.CreateAuthProviderDTO
|
||||
update: RepositoryTypes.UpdateAuthProviderDTO
|
||||
}
|
||||
>(AuthProvider) {
|
||||
constructor(...args: any[]) {
|
||||
// @ts-ignore
|
||||
super(...arguments)
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
import { DALUtils } from "@medusajs/utils"
|
||||
|
||||
import { AuthUser } from "@models"
|
||||
import { RepositoryTypes } from "@types"
|
||||
|
||||
export class AuthUserRepository extends DALUtils.mikroOrmBaseRepositoryFactory<
|
||||
AuthUser,
|
||||
{
|
||||
create: RepositoryTypes.CreateAuthUserDTO
|
||||
update: RepositoryTypes.UpdateAuthUserDTO
|
||||
}
|
||||
>(AuthUser) {
|
||||
constructor(...args: any[]) {
|
||||
// @ts-ignore
|
||||
super(...arguments)
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1 @@
|
||||
export { MikroOrmBaseRepository as BaseRepository } from "@medusajs/utils"
|
||||
export { AuthProviderRepository } from "./auth-provider"
|
||||
export { AuthUserRepository } from "./auth-user"
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
export default (async () => {
|
||||
const { revertMigration } = await import("../migration-down")
|
||||
const { config } = await import("dotenv")
|
||||
config()
|
||||
await revertMigration()
|
||||
})()
|
||||
@@ -1,8 +0,0 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
export default (async () => {
|
||||
const { runMigrations } = await import("../migration-up")
|
||||
const { config } = await import("dotenv")
|
||||
config()
|
||||
await runMigrations()
|
||||
})()
|
||||
@@ -1,2 +0,0 @@
|
||||
export * from "./migration-up"
|
||||
export * from "./migration-down"
|
||||
@@ -1,50 +0,0 @@
|
||||
import { Modules } from "@medusajs/modules-sdk";
|
||||
import { LoaderOptions, Logger, ModulesSdkTypes } from "@medusajs/types";
|
||||
import { DALUtils, ModulesSdkUtils } from "@medusajs/utils";
|
||||
import { EntitySchema } from "@mikro-orm/core";
|
||||
import * as AuthenticationModels from "@models";
|
||||
|
||||
/**
|
||||
* This script is only valid for mikro orm managers. If a user provide a custom manager
|
||||
* he is in charge of reverting the migrations.
|
||||
* @param options
|
||||
* @param logger
|
||||
* @param moduleDeclaration
|
||||
*/
|
||||
export async function revertMigration({
|
||||
options,
|
||||
logger,
|
||||
}: Pick<
|
||||
LoaderOptions<ModulesSdkTypes.ModuleServiceInitializeOptions>,
|
||||
"options" | "logger"
|
||||
> = {}) {
|
||||
logger ??= console as unknown as Logger
|
||||
|
||||
const dbData = ModulesSdkUtils.loadDatabaseConfig(
|
||||
Modules.AUTHENTICATION,
|
||||
options
|
||||
)!
|
||||
const entities = Object.values(
|
||||
AuthenticationModels
|
||||
) as unknown as EntitySchema[]
|
||||
const pathToMigrations = __dirname + "/../migrations"
|
||||
|
||||
const orm = await DALUtils.mikroOrmCreateConnection(
|
||||
dbData,
|
||||
entities,
|
||||
pathToMigrations
|
||||
)
|
||||
|
||||
try {
|
||||
const migrator = orm.getMigrator()
|
||||
await migrator.down()
|
||||
|
||||
logger?.info("Authentication module migration executed")
|
||||
} catch (error) {
|
||||
logger?.error(
|
||||
`Authentication module migration failed to run - Error: ${error}`
|
||||
)
|
||||
}
|
||||
|
||||
await orm.close()
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
import { Modules } from "@medusajs/modules-sdk";
|
||||
import { LoaderOptions, Logger, ModulesSdkTypes } from "@medusajs/types";
|
||||
import { DALUtils, ModulesSdkUtils } from "@medusajs/utils";
|
||||
import { EntitySchema } from "@mikro-orm/core";
|
||||
import * as AuthenticationModels from "@models";
|
||||
|
||||
/**
|
||||
* This script is only valid for mikro orm managers. If a user provide a custom manager
|
||||
* he is in charge of running the migrations.
|
||||
* @param options
|
||||
* @param logger
|
||||
* @param moduleDeclaration
|
||||
*/
|
||||
export async function runMigrations({
|
||||
options,
|
||||
logger,
|
||||
}: Pick<
|
||||
LoaderOptions<ModulesSdkTypes.ModuleServiceInitializeOptions>,
|
||||
"options" | "logger"
|
||||
> = {}) {
|
||||
logger ??= console as unknown as Logger
|
||||
|
||||
const dbData = ModulesSdkUtils.loadDatabaseConfig(
|
||||
Modules.AUTHENTICATION,
|
||||
options
|
||||
)!
|
||||
const entities = Object.values(
|
||||
AuthenticationModels
|
||||
) as unknown as EntitySchema[]
|
||||
const pathToMigrations = __dirname + "/../migrations"
|
||||
|
||||
const orm = await DALUtils.mikroOrmCreateConnection(
|
||||
dbData,
|
||||
entities,
|
||||
pathToMigrations
|
||||
)
|
||||
|
||||
try {
|
||||
const migrator = orm.getMigrator()
|
||||
|
||||
const pendingMigrations = await migrator.getPendingMigrations()
|
||||
logger.info(
|
||||
`Running pending migrations: ${JSON.stringify(
|
||||
pendingMigrations,
|
||||
null,
|
||||
2
|
||||
)}`
|
||||
)
|
||||
|
||||
await migrator.up({
|
||||
migrations: pendingMigrations.map((m) => m.name),
|
||||
})
|
||||
|
||||
logger.info("Authentication module migration executed")
|
||||
} catch (error) {
|
||||
logger.error(
|
||||
`Authentication module migration failed to run - Error: ${error}`
|
||||
)
|
||||
}
|
||||
|
||||
await orm.close()
|
||||
}
|
||||
@@ -16,7 +16,7 @@ export default class AuthUserService<
|
||||
create: ServiceTypes.CreateAuthUserDTO
|
||||
}
|
||||
>(AuthUser)<TEntity> {
|
||||
constructor({ authUserRepository }: InjectedDependencies) {
|
||||
constructor(container: InjectedDependencies) {
|
||||
// @ts-ignore
|
||||
super(...arguments)
|
||||
}
|
||||
|
||||
@@ -1,2 +1,28 @@
|
||||
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