Skip to content

Commit

Permalink
fix: Remove medusa v2 flag from the medusa app package
Browse files Browse the repository at this point in the history
  • Loading branch information
sradevski committed May 11, 2024
1 parent 45e2228 commit 06c418b
Show file tree
Hide file tree
Showing 16 changed files with 109 additions and 457 deletions.
37 changes: 12 additions & 25 deletions packages/medusa/src/commands/migrate.js
Expand Up @@ -8,8 +8,6 @@ import getMigrations, {
import {
ContainerRegistrationKeys,
createMedusaContainer,
MedusaV2Flag,
promiseAll,
} from "@medusajs/utils"
import configModuleLoader from "../loaders/config"
import databaseLoader from "../loaders/database"
Expand Down Expand Up @@ -76,30 +74,19 @@ const main = async function ({ directory }) {
const featureFlagRouter = featureFlagLoader(configModule)

if (args[0] === "run") {
if (featureFlagRouter.isFeatureEnabled(MedusaV2Flag.key)) {
const container = createMedusaContainer()
const pgConnection = await pgConnectionLoader({ configModule, container })
container.register({
[ContainerRegistrationKeys.CONFIG_MODULE]: asValue(configModule),
[ContainerRegistrationKeys.LOGGER]: asValue(Logger),
[ContainerRegistrationKeys.PG_CONNECTION]: asValue(pgConnection),
featureFlagRouter: asValue(featureFlagRouter),
})
await migrateMedusaApp(
{ configModule, container },
{ registerInContainer: false }
)
} else {
const dataSource = await getDataSource(directory)
await dataSource.runMigrations()
await dataSource.destroy()
await runIsolatedModulesMigration(configModule)

await runLinkMigrations(directory)
}
const container = createMedusaContainer()
const pgConnection = await pgConnectionLoader({ configModule, container })
container.register({
[ContainerRegistrationKeys.CONFIG_MODULE]: asValue(configModule),
[ContainerRegistrationKeys.LOGGER]: asValue(Logger),
[ContainerRegistrationKeys.PG_CONNECTION]: asValue(pgConnection),
featureFlagRouter: asValue(featureFlagRouter),
})
await migrateMedusaApp(
{ configModule, container },
{ registerInContainer: false }
)
process.exit()

Logger.info("Migrations completed.")
} else if (args[0] === "revert") {
const dataSource = await getDataSource(directory)
await dataSource.undoLastMigration({ transaction: "all" })
Expand Down
80 changes: 26 additions & 54 deletions packages/medusa/src/commands/user.js
Expand Up @@ -7,43 +7,6 @@ import { track } from "medusa-telemetry"
import loaders from "../loaders"
import Logger from "../loaders/logger"
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
import featureFlagLoader from "../loaders/feature-flags"
import configModuleLoader from "../loaders/config"
import { MedusaV2Flag } from "@medusajs/utils"

const useV2Command = async (
{ email, password, isInvite, provider = "emailpass" },
{ container }
) => {
const userService = container.resolve(ModuleRegistrationName.USER)
const authService = container.resolve(ModuleRegistrationName.AUTH)

if (isInvite) {
// The invite flow only works with the V2 version of packages/admin-next/dashboard, so enable the V2 feature flag in admin before using this command
const invite = await userService.createInvites({ email })

Logger.info(`
Invite token: ${invite.token}
Open the invite in Medusa Admin at: [your-admin-url]/invite?token=${invite.token}`)
} else {
const user = await userService.create({ email })

const { authUser } = await authService.authenticate(provider, {
body: {
email,
password,
},
authScope: "admin",
})

await authService.update({
id: authUser.id,
app_metadata: {
user_id: user.id,
},
})
}
}

export default async function ({
directory,
Expand All @@ -61,25 +24,34 @@ export default async function ({
expressApp: app,
})

const configModule = configModuleLoader(directory)
const featureFlagRouter = featureFlagLoader(configModule)
const userService = container.resolve(ModuleRegistrationName.USER)
const authService = container.resolve(ModuleRegistrationName.AUTH)
const provider = "emailpass"

if (featureFlagRouter.isFeatureEnabled(MedusaV2Flag.key)) {
await useV2Command({ email, password, isInvite: invite }, { container })
if (invite) {
// The invite flow only works with the V2 version of packages/admin-next/dashboard, so enable the V2 feature flag in admin before using this command
const invite = await userService.createInvites({ email })

Logger.info(`
Invite token: ${invite.token}
Open the invite in Medusa Admin at: [your-admin-url]/invite?token=${invite.token}`)
} else {
if (invite) {
const inviteService = container.resolve("inviteService")
await inviteService.create(email, "admin")
const invite = await inviteService.list({
user_email: email,
})
Logger.info(`
Invite token: ${invite[0].token}
Open the invite in Medusa Admin at: [your-admin-url]/invite?token=${invite[0].token}`)
} else {
const userService = container.resolve("userService")
await userService.create({ id, email }, password)
}
const user = await userService.create({ email })

const { authUser } = await authService.authenticate(provider, {
body: {
email,
password,
},
authScope: "admin",
})

await authService.update({
id: authUser.id,
app_metadata: {
user_id: user.id,
},
})
}
} catch (err) {
console.error(err)
Expand Down
7 changes: 1 addition & 6 deletions packages/medusa/src/loaders/api.ts
Expand Up @@ -13,12 +13,7 @@ type Options = {
featureFlagRouter?: FlagRouter
}

export default async ({
app,
container,
configModule,
featureFlagRouter,
}: Options) => {
export default async ({ app, configModule }: Options) => {
// This is a workaround for the issue described here: https://github.com/expressjs/express/issues/3454
// We parse the url and get the qs to be parsed and override the query prop from the request
app.use(function (req, res, next) {
Expand Down
9 changes: 6 additions & 3 deletions packages/medusa/src/loaders/express.ts
Expand Up @@ -11,8 +11,11 @@ type Options = {
configModule: ConfigModule
}

export default async ({ app, configModule }: Options): Promise<{
app: Express,
export default async ({
app,
configModule,
}: Options): Promise<{
app: Express
shutdown: () => Promise<void>
}> => {
let sameSite: string | boolean = false
Expand Down Expand Up @@ -46,7 +49,7 @@ export default async ({ app, configModule }: Options): Promise<{
if (configModule?.projectConfig?.redis_url) {
const RedisStore = createStore(session)
redisClient = new Redis(
configModule.projectConfig.redis_url,
configModule.projectConfig.redis_url,
configModule.projectConfig.redis_options ?? {}
)
sessionOpts.store = new RedisStore({
Expand Down

0 comments on commit 06c418b

Please sign in to comment.