chore(server): standardize server db names and columns (#7674)

This commit is contained in:
forehalo
2024-07-31 07:59:22 +00:00
parent c6d4985cba
commit 4ec89ebd69
15 changed files with 276 additions and 459 deletions
@@ -1,11 +1,6 @@
import { Prisma, PrismaClient } from '@prisma/client';
import {
CommonFeature,
FeatureKind,
Features,
FeatureType,
} from '../../../core/features';
import { CommonFeature, Features, FeatureType } from '../../../core/features';
// upgrade features from lower version to higher version
export async function upsertFeature(
@@ -13,7 +8,7 @@ export async function upsertFeature(
feature: CommonFeature
): Promise<void> {
const hasEqualOrGreaterVersion =
(await db.features.count({
(await db.feature.count({
where: {
feature: feature.feature,
version: {
@@ -23,7 +18,7 @@ export async function upsertFeature(
})) > 0;
// will not update exists version
if (!hasEqualOrGreaterVersion) {
await db.features.create({
await db.feature.create({
data: {
feature: feature.feature,
type: feature.type,
@@ -43,66 +38,3 @@ export async function upsertLatestFeatureVersion(
const latestFeature = feature[0];
await upsertFeature(db, latestFeature);
}
export async function migrateNewFeatureTable(prisma: PrismaClient) {
const waitingList = await prisma.newFeaturesWaitingList.findMany();
const latestEarlyAccessFeatureId = await prisma.features
.findFirst({
where: { feature: FeatureType.EarlyAccess, type: FeatureKind.Feature },
select: { id: true },
orderBy: { version: 'desc' },
})
.then(r => r?.id);
if (!latestEarlyAccessFeatureId) {
throw new Error('Feature EarlyAccess not found');
}
for (const oldUser of waitingList) {
const user = await prisma.user.findFirst({
where: {
email: oldUser.email,
},
});
if (user) {
const hasEarlyAccess = await prisma.userFeatures.count({
where: {
userId: user.id,
feature: {
feature: FeatureType.EarlyAccess,
},
activated: true,
},
});
if (hasEarlyAccess === 0) {
await prisma.$transaction(async tx => {
const latestFlag = await tx.userFeatures.findFirst({
where: {
userId: user.id,
feature: {
feature: FeatureType.EarlyAccess,
type: FeatureKind.Feature,
},
activated: true,
},
orderBy: {
createdAt: 'desc',
},
});
if (latestFlag) {
return latestFlag.id;
} else {
return tx.userFeatures
.create({
data: {
reason: 'Early access user',
activated: true,
userId: user.id,
featureId: latestEarlyAccessFeatureId,
},
})
.then(r => r.id);
}
});
}
}
}
}
@@ -15,7 +15,7 @@ export async function upgradeQuotaVersion(
// migrate all users that using old quota to new quota
await db.$transaction(
async tx => {
const latestQuotaVersion = await tx.features.findFirstOrThrow({
const latestQuotaVersion = await tx.feature.findFirstOrThrow({
where: { feature: quota.feature },
orderBy: { version: 'desc' },
select: { id: true },
@@ -39,7 +39,7 @@ export async function upgradeQuotaVersion(
});
// deactivate all old quota for the user
await tx.userFeatures.updateMany({
await tx.userFeature.updateMany({
where: {
id: undefined,
userId: {
@@ -55,7 +55,7 @@ export async function upgradeQuotaVersion(
},
});
await tx.userFeatures.createMany({
await tx.userFeature.createMany({
data: userIds.map(({ id: userId }) => ({
userId,
featureId: latestQuotaVersion.id,