Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"db:generate": "drizzle-kit generate",
"db:seed": "tsx scripts/seed.ts",
"db:migrate": "drizzle-kit migrate",
"db:reset": "rm -f data.db data.db-shm data.db-wal && pnpm db:seed",
"loc": "git ls-files | grep -vE '(lock|.db|_snapshot.json)' | xargs wc -l"
},
"dependencies": {
Expand Down
34 changes: 13 additions & 21 deletions scripts/seed.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,27 +43,19 @@ function slugify(title: string): string {
async function seed() {
console.log("Seeding database...");

// Drop and recreate tables for a clean seed
sqlite.exec(`
DROP TABLE IF EXISTS video_watch_events;
DROP TABLE IF EXISTS quiz_answers;
DROP TABLE IF EXISTS quiz_attempts;
DROP TABLE IF EXISTS quiz_options;
DROP TABLE IF EXISTS quiz_questions;
DROP TABLE IF EXISTS quizzes;
DROP TABLE IF EXISTS lesson_progress;
DROP TABLE IF EXISTS coupons;
DROP TABLE IF EXISTS team_members;
DROP TABLE IF EXISTS teams;
DROP TABLE IF EXISTS purchases;
DROP TABLE IF EXISTS enrollments;
DROP TABLE IF EXISTS lessons;
DROP TABLE IF EXISTS modules;
DROP TABLE IF EXISTS courses;
DROP TABLE IF EXISTS categories;
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS __drizzle_migrations;
`);
// Drop every existing table for a clean seed, regardless of which
// schema version they came from (avoids stale tables blocking migrate())
const existingTables = sqlite
.prepare(
`SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'`
)
.all() as { name: string }[];

sqlite.pragma("foreign_keys = OFF");
for (const { name } of existingTables) {
sqlite.exec(`DROP TABLE IF EXISTS "${name}";`);
}
sqlite.pragma("foreign_keys = ON");

// Create tables using the same Drizzle migrations as the live database
migrate(db, { migrationsFolder });
Expand Down