Skip to content
Merged
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
6 changes: 4 additions & 2 deletions .github/workflows/pull-request-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ jobs:
- name: Run Biome
run: biome ci .
build:
needs: [biome-check]
runs-on: ubuntu-latest
steps:
- name: Checkout code
Expand Down Expand Up @@ -54,6 +55,7 @@ jobs:
- name: Start
run: pnpm start &
test:
needs: [biome-check]
runs-on: ubuntu-latest
steps:
- name: Checkout code
Expand All @@ -75,9 +77,9 @@ jobs:
run: pnpm db:generate
- name: Migrate database
run: pnpm db:migrate
- name: Seed database
run: pnpm db:seed
- name: Build
run: pnpm build
- name: Test
run: pnpm test


17 changes: 17 additions & 0 deletions db/seeding/seeding-tables.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { departmentsTable } from "@/db/tables/departments";
import { expensesTable } from "@/db/tables/expenses";
import { fieldsOfStudyTable } from "@/db/tables/fields-of-study";
import { teamApplicationsTable } from "@/db/tables/team-applications";
import { teamsTable } from "@/db/tables/teams";
import { usersTable } from "@/db/tables/users";

export const seedingTables = {
departmentsTable,
fieldsOfStudyTable,
teamsTable,
usersTable,
//teamUsersTable, these two tables dont work currently
//assistantUsersTable,
teamApplicationsTable,
expensesTable,
};
49 changes: 49 additions & 0 deletions db/seeding/seeding.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import {
getDatabaseErrorPrivateMessage,
postgresErrorParser,
} from "@/db/errors/postgres-error";
import { seedingTables } from "@/db/seeding/seeding-tables";
import { database } from "@/db/setup/query-postgres";
import { reset, seed } from "drizzle-seed";

const doRevertSeeding =
process.argv.length === 3 && process.argv[2] === "--reset";
const hasUnknownOption =
process.argv.length > 3 ||
(process.argv.length === 3 && process.argv[2] !== "--reset");
if (hasUnknownOption) {
console.error("Unknown option");
process.exit(1);
}

if (doRevertSeeding) {
await reset(database, seedingTables);
console.info("Database seeding has been reverted");
process.exit(0);
}

try {
await seed(database, seedingTables);
console.info("Database has been seeded");
} catch (error) {
const postgresErrorResult = postgresErrorParser.safeParse(error);
if (postgresErrorResult.success) {
console.error("Database error:");
console.error(getDatabaseErrorPrivateMessage(postgresErrorResult.data));
} else if (error instanceof Error) {
// The drizzle-seed library has awful errorhandling and just throws
// new Error() everywhere. So this is the best way to handle it
console.error(error.message);
} else {
console.error(error);
}
if (doRevertSeeding) {
console.error("Failed to reset seeded database");
} else {
console.error("Failed to seed database");
await reset(database, seedingTables);
}
process.exit(1);
}

process.exit(0);
42 changes: 0 additions & 42 deletions db/setup/create-database.ts

This file was deleted.

4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,15 @@
"db:generate": "drizzle-kit generate --config=db/config/drizzle.config.ts",
"db:migrate": "drizzle-kit migrate --config=db/config/drizzle.config.ts",
"db:studio": "drizzle-kit studio --config=db/config/drizzle.config.ts",
"db:seed": "tsx ./db/seeding/seeding.ts",
"docs:generate": "tsx ./src/openapi/generateDocument.ts"
},
"license": "ISC",
"dependencies": {
"cors": "^2.8.5",
"dotenv": "^16.4.5",
"drizzle-orm": "^0.33.0",
"drizzle-seed": "^0.3.1",
"drizzle-zod": "^0.5.1",
"express": "^4.21.1",
"pg": "^8.13.0",
Expand Down Expand Up @@ -51,5 +53,5 @@
"typescript": "^5.6.3",
"yaml": "^2.6.0"
},
"packageManager": "pnpm@10.6.3+sha512.bb45e34d50a9a76e858a95837301bfb6bd6d35aea2c5d52094fa497a467c43f5c440103ce2511e9e0a2f89c3d6071baac3358fc68ac6fb75e2ceb3d2736065e6"
"packageManager": "pnpm@10.6.4+sha512.da3d715bfd22a9a105e6e8088cfc7826699332ded60c423b14ec613a185f1602206702ff0fe4c438cb15c979081ce4cb02568e364b15174503a63c7a8e2a5f6c"
}
22 changes: 22 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.