fix: correct column names in data migration script to match actual Directus schema
Some checks failed
Build and Push Backend Image / build (push) Successful in 37s
Build and Push Frontend Image / build (push) Has been cancelled

- directus_files: uploaded_on → date_created alias
- directus_users: join_date → date_created, remove email_notifications_key
- junction_directus_users_files: remove non-existent sort column
- sexy_videos: remove non-existent likes_count/plays_count (default 0)
- sexy_recordings: remove non-existent featured column (schema has default false)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-04 19:33:33 +01:00
parent ceb57ec1c4
commit 480369aa4e

View File

@@ -44,7 +44,7 @@ function copyFile(src: string, dest: string) {
async function migrateFiles() { async function migrateFiles() {
console.log("📁 Migrating files..."); console.log("📁 Migrating files...");
const { rows } = await query( const { rows } = await query(
`SELECT id, title, description, filename_disk, type, filesize, duration, uploaded_by, date_created `SELECT id, title, description, filename_disk, type, filesize, duration, uploaded_by, uploaded_on as date_created
FROM directus_files`, FROM directus_files`,
); );
@@ -95,8 +95,8 @@ async function migrateUsers() {
console.log("👥 Migrating users..."); console.log("👥 Migrating users...");
const { rows } = await query( const { rows } = await query(
`SELECT u.id, u.email, u.password, u.first_name, u.last_name, `SELECT u.id, u.email, u.password, u.first_name, u.last_name,
u.description, u.avatar, u.date_created, u.description, u.avatar, u.join_date as date_created,
u.artist_name, u.slug, u.email_notifications_key, u.artist_name, u.slug,
r.name as role_name r.name as role_name
FROM directus_users u FROM directus_users u
LEFT JOIN directus_roles r ON u.role = r.id LEFT JOIN directus_roles r ON u.role = r.id
@@ -147,7 +147,7 @@ async function migrateUsers() {
JSON.stringify(tags), JSON.stringify(tags),
role, role,
user.avatar, user.avatar,
true, // Assume existing users are verified true,
user.date_created, user.date_created,
], ],
); );
@@ -160,7 +160,7 @@ async function migrateUsers() {
async function migrateUserPhotos() { async function migrateUserPhotos() {
console.log("🖼️ Migrating user photos..."); console.log("🖼️ Migrating user photos...");
const { rows } = await query( const { rows } = await query(
`SELECT directus_users_id as user_id, directus_files_id as file_id, sort `SELECT directus_users_id as user_id, directus_files_id as file_id
FROM junction_directus_users_files`, FROM junction_directus_users_files`,
); );
@@ -173,7 +173,7 @@ async function migrateUserPhotos() {
await query( await query(
`INSERT INTO user_photos (user_id, file_id, sort) VALUES ($1, $2, $3) `INSERT INTO user_photos (user_id, file_id, sort) VALUES ($1, $2, $3)
ON CONFLICT DO NOTHING`, ON CONFLICT DO NOTHING`,
[row.user_id, row.file_id, row.sort || 0], [row.user_id, row.file_id, 0],
); );
migrated++; migrated++;
} }
@@ -222,7 +222,7 @@ async function migrateVideos() {
console.log("🎬 Migrating videos..."); console.log("🎬 Migrating videos...");
const { rows } = await query( const { rows } = await query(
`SELECT id, slug, title, description, image, movie, tags, upload_date, `SELECT id, slug, title, description, image, movie, tags, upload_date,
premium, featured, likes_count, plays_count premium, featured
FROM sexy_videos`, FROM sexy_videos`,
); );
@@ -244,8 +244,8 @@ async function migrateVideos() {
video.upload_date, video.upload_date,
video.premium, video.premium,
video.featured, video.featured,
video.likes_count || 0, 0,
video.plays_count || 0, 0,
], ],
); );
migrated++; migrated++;
@@ -329,7 +329,7 @@ async function migrateRecordings() {
console.log("🎙️ Migrating recordings..."); console.log("🎙️ Migrating recordings...");
const { rows } = await query( const { rows } = await query(
`SELECT id, title, description, slug, duration, events, device_info, `SELECT id, title, description, slug, duration, events, device_info,
user_created as user_id, status, tags, linked_video, featured, public, user_created as user_id, status, tags, linked_video, public,
original_recording_id, date_created, date_updated original_recording_id, date_created, date_updated
FROM sexy_recordings`, FROM sexy_recordings`,
); );
@@ -338,9 +338,9 @@ async function migrateRecordings() {
for (const recording of rows) { for (const recording of rows) {
await query( await query(
`INSERT INTO recordings (id, title, description, slug, duration, events, device_info, `INSERT INTO recordings (id, title, description, slug, duration, events, device_info,
user_id, status, tags, linked_video, featured, public, user_id, status, tags, linked_video, public,
original_recording_id, date_created, date_updated) original_recording_id, date_created, date_updated)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15)
ON CONFLICT (id) DO NOTHING`, ON CONFLICT (id) DO NOTHING`,
[ [
recording.id, recording.id,
@@ -356,7 +356,6 @@ async function migrateRecordings() {
recording.status, recording.status,
Array.isArray(recording.tags) ? JSON.stringify(recording.tags) : recording.tags, Array.isArray(recording.tags) ? JSON.stringify(recording.tags) : recording.tags,
recording.linked_video, recording.linked_video,
recording.featured,
recording.public, recording.public,
recording.original_recording_id, recording.original_recording_id,
recording.date_created, recording.date_created,