Update migrations

This commit is contained in:
2026-03-06 21:59:52 +02:00
parent 742242ffb8
commit 095463cafa
4 changed files with 27 additions and 86 deletions

92
server/plugins/migrate.ts Normal file
View File

@@ -0,0 +1,92 @@
import { migrate } from "drizzle-orm/bun-sqlite/migrator";
import path from "node:path";
export default defineNitroPlugin(async (nitroApp) => {
const db = useDrizzle();
const migrationsFolder = path.resolve("server/database/migrations");
console.log("Running database migrations...");
console.log(`Migrations folder: ${migrationsFolder}`);
migrate(db, { migrationsFolder });
console.log("Database migrations complete");
const feedFile = Bun.file(path.resolve("tmp/feed.json"));
const feedData = await feedFile.json().catch((err) => {
console.log(err.message);
return [];
});
for (const item of feedData) {
const userId = String(item.user.id);
await db
.insert(tables.users)
.values({
id: userId,
name: item.user.name,
avatar: item.user.avatar,
city: item.user.city,
country: item.user.country,
sex: item.user.sex,
weight: item.user.weight,
createdAt: new Date(item.user.created_at),
})
.onConflictDoUpdate({
target: tables.users.id,
set: {
name: item.user.name,
avatar: item.user.avatar,
city: item.user.city,
country: item.user.country,
sex: item.user.sex,
weight: item.user.weight,
},
});
await db
.insert(tables.tokens)
.values({
userId: userId,
refreshToken: item.token.refresh_token,
accessToken: item.token.access_token,
expiresAt: new Date(item.token.expires_at),
})
.onConflictDoUpdate({
target: tables.tokens.userId,
set: {
refreshToken: item.token.refresh_token,
accessToken: item.token.access_token,
expiresAt: new Date(item.token.expires_at),
},
});
await db
.insert(tables.preferences)
.values({
userId: userId,
data: {
enabled: item.preferences.enabled,
language: item.preferences.language,
units: item.preferences.units,
tone: item.preferences.tone,
highlights: [],
},
})
.onConflictDoUpdate({
target: tables.preferences.userId,
set: {
data: {
enabled: item.preferences.enabled,
language: item.preferences.language,
units: item.preferences.units,
tone: item.preferences.tone,
highlights: [],
},
},
});
}
console.log(`Processed ${feedData.length} feed items`);
});