Files
muzick/backend/scripts/seed.ts
T

53 lines
1.7 KiB
TypeScript

import { Client as PgClient } from 'pg';
async function seed() {
const pgClient = new PgClient({
connectionString: process.env.DATABASE_URL,
});
await pgClient.connect();
console.log('Seeding database...');
try {
// Clear existing data
await pgClient.query('TRUNCATE artists, albums, tracks, genre, track_genre, dislikes, recommendation_batch, recommendation_batch_track, track_audio_features, track_lyrics CASCADE');
// Insert an artist
const artistRes = await pgClient.query(
'INSERT INTO artists (name, mbid) VALUES ($1, $2) RETURNING id',
['Daft Punk', '5742e173-e031-4848-90a4-977799791608']
);
const artistId = artistRes.rows[0].id;
// Insert an album
const albumRes = await pgClient.query(
'INSERT INTO albums (artist_id, title, year) VALUES ($1, $2, $3) RETURNING id',
[artistId, 'Discovery', 2001]
);
const albumId = albumRes.rows[0].id;
// Insert tracks
await pgClient.query(
`INSERT INTO tracks (path, hash, title, artist, album_id, duration, state, source_type)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)`,
['/music/daft_punk/discovery/one_more_time.mp3', 'hash1', 'One More Time', 'Daft Punk', albumId, 320, 'LIBRARY', 'MANUAL']
);
await pgClient.query(
`INSERT INTO tracks (path, hash, title, artist, album_id, duration, state, source_type)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)`,
['/music/daft_punk/discovery/harder_better_faster_stronger.mp3', 'hash2', 'Harder, Better, Faster, Stronger', 'Daft Punk', albumId, 224, 'LIBRARY', 'MANUAL']
);
console.log('Seeding successful!');
} catch (err) {
console.error('Seeding failed:', err);
process.exit(1);
} finally {
await pgClient.end();
}
}
seed();