53 lines
1.7 KiB
TypeScript
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();
|