From 16de5a9e648adafca2707256eb0ded0931fd4e7f Mon Sep 17 00:00:00 2001 From: simenen123 Date: Wed, 10 Sep 2025 18:28:00 +0200 Subject: [PATCH 01/19] feat:lagt til meetings table --- db/seeding/seeding-tables.ts | 2 ++ db/tables/meetings.ts | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 db/tables/meetings.ts diff --git a/db/seeding/seeding-tables.ts b/db/seeding/seeding-tables.ts index c67ce82..ec2982f 100644 --- a/db/seeding/seeding-tables.ts +++ b/db/seeding/seeding-tables.ts @@ -3,12 +3,14 @@ import { expensesTable } from "@/db/tables/expenses"; import { fieldsOfStudyTable } from "@/db/tables/fields-of-study"; import { teamsTable } from "@/db/tables/teams"; import { usersTable } from "@/db/tables/users"; +import { meetings } from "@/db/tables/meetings"; export const seedingTables = { departmentsTable, fieldsOfStudyTable, teamsTable, usersTable, + meetings, //teamUsersTable, these two tables dont work currently //assistantUsersTable, //teamApplicationsTable, diff --git a/db/tables/meetings.ts b/db/tables/meetings.ts new file mode 100644 index 0000000..9ed9034 --- /dev/null +++ b/db/tables/meetings.ts @@ -0,0 +1,35 @@ +import { mainSchema } from "@/db/tables/schema"; +import { usersTable } from "@/db/tables/users"; +import { relations } from "drizzle-orm"; +import { + boolean, + integer, + numeric, + serial, + text, + timestamp, +} from "drizzle-orm/pg-core"; +import { semestersTable } from "./semesters"; + +export const meetingsTable = mainSchema.table("meetings", { + id: serial("id").primaryKey(), + title: text("title").notNull(), + description: text("description").notNull(), + semesterId: text("semesterId") + .notNull() + .references(() => semestersTable.id), + date: text("date").notNull(), + timestart: text("TimeStart").notNull(), + timeEnd: text("TimeEnd").notNull(), + room: text("room").notNull() +}); + +export const meetingsRelations = relations(meetingsTable, ({ one }) => ({ + semester: one(semestersTable, { + fields: [meetingsTable.semesterId], // FK i meetings + references: [semestersTable.id], // PK i semesters + }), +})); + +export const meetings = relations(meetingsTable, () => ({})); + From 08bf204e063c9e247192beffb20b2c468db26192 Mon Sep 17 00:00:00 2001 From: simenen123 Date: Wed, 10 Sep 2025 18:42:48 +0200 Subject: [PATCH 02/19] fixed:fjerna unused imports --- db/tables/meetings.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/db/tables/meetings.ts b/db/tables/meetings.ts index 9ed9034..4485dff 100644 --- a/db/tables/meetings.ts +++ b/db/tables/meetings.ts @@ -1,13 +1,8 @@ import { mainSchema } from "@/db/tables/schema"; -import { usersTable } from "@/db/tables/users"; import { relations } from "drizzle-orm"; import { - boolean, - integer, - numeric, serial, text, - timestamp, } from "drizzle-orm/pg-core"; import { semestersTable } from "./semesters"; From 0a21d7120668bf51cbe84d3db25fe5b911c05b9d Mon Sep 17 00:00:00 2001 From: simenen123 Date: Wed, 10 Sep 2025 18:55:18 +0200 Subject: [PATCH 03/19] =?UTF-8?q?pr=C3=B8ver=20igjen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/seeding/seeding-tables.ts | 2 +- db/tables/meetings.ts | 35 ++++++++++++++++------------------- 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/db/seeding/seeding-tables.ts b/db/seeding/seeding-tables.ts index ec2982f..703ba2f 100644 --- a/db/seeding/seeding-tables.ts +++ b/db/seeding/seeding-tables.ts @@ -1,9 +1,9 @@ import { departmentsTable } from "@/db/tables/departments"; import { expensesTable } from "@/db/tables/expenses"; import { fieldsOfStudyTable } from "@/db/tables/fields-of-study"; +import { meetings } from "@/db/tables/meetings"; import { teamsTable } from "@/db/tables/teams"; import { usersTable } from "@/db/tables/users"; -import { meetings } from "@/db/tables/meetings"; export const seedingTables = { departmentsTable, diff --git a/db/tables/meetings.ts b/db/tables/meetings.ts index 4485dff..b20d4e8 100644 --- a/db/tables/meetings.ts +++ b/db/tables/meetings.ts @@ -1,30 +1,27 @@ import { mainSchema } from "@/db/tables/schema"; import { relations } from "drizzle-orm"; -import { - serial, - text, -} from "drizzle-orm/pg-core"; +import { serial, text } from "drizzle-orm/pg-core"; import { semestersTable } from "./semesters"; +import { integer } from "drizzle-orm/sqlite-core"; export const meetingsTable = mainSchema.table("meetings", { - id: serial("id").primaryKey(), - title: text("title").notNull(), - description: text("description").notNull(), - semesterId: text("semesterId") - .notNull() - .references(() => semestersTable.id), - date: text("date").notNull(), - timestart: text("TimeStart").notNull(), - timeEnd: text("TimeEnd").notNull(), - room: text("room").notNull() + id: serial("id").primaryKey(), + title: text("title").notNull(), + description: text("description").notNull(), + semesterId: serial("semesterId") + .notNull() + .references(() => semestersTable.id), + date: text("date").notNull(), + timestart: text("TimeStart").notNull(), + timeEnd: text("TimeEnd").notNull(), + room: text("room").notNull(), }); export const meetingsRelations = relations(meetingsTable, ({ one }) => ({ - semester: one(semestersTable, { - fields: [meetingsTable.semesterId], // FK i meetings - references: [semestersTable.id], // PK i semesters - }), + semester: one(semestersTable, { + fields: [meetingsTable.semesterId], // FK i meetings + references: [semestersTable.id], // PK i semesters + }), })); export const meetings = relations(meetingsTable, () => ({})); - From 25d60bc2d3da37f5ab4a123a6c41eb1e9057fbea Mon Sep 17 00:00:00 2001 From: simenen123 Date: Wed, 10 Sep 2025 18:58:31 +0200 Subject: [PATCH 04/19] bruh --- db/tables/meetings.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/db/tables/meetings.ts b/db/tables/meetings.ts index b20d4e8..94e23e3 100644 --- a/db/tables/meetings.ts +++ b/db/tables/meetings.ts @@ -2,7 +2,6 @@ import { mainSchema } from "@/db/tables/schema"; import { relations } from "drizzle-orm"; import { serial, text } from "drizzle-orm/pg-core"; import { semestersTable } from "./semesters"; -import { integer } from "drizzle-orm/sqlite-core"; export const meetingsTable = mainSchema.table("meetings", { id: serial("id").primaryKey(), From 980dddb45cd7ad7c281c55947c585cb118845d17 Mon Sep 17 00:00:00 2001 From: simenen123 Date: Wed, 8 Oct 2025 18:37:24 +0200 Subject: [PATCH 05/19] =?UTF-8?q?fix:=20endret=20p=C3=A5=20de=20n=C3=B8dve?= =?UTF-8?q?ndige=20delene?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/seeding/seed.sql | 0 db/seeding/seeding-tables.ts | 11 +++++++++-- db/tables/meetings.ts | 10 +++++----- tsconfig.json | 3 ++- 4 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 db/seeding/seed.sql diff --git a/db/seeding/seed.sql b/db/seeding/seed.sql new file mode 100644 index 0000000..e69de29 diff --git a/db/seeding/seeding-tables.ts b/db/seeding/seeding-tables.ts index 703ba2f..2c3c2fd 100644 --- a/db/seeding/seeding-tables.ts +++ b/db/seeding/seeding-tables.ts @@ -1,18 +1,25 @@ import { departmentsTable } from "@/db/tables/departments"; import { expensesTable } from "@/db/tables/expenses"; import { fieldsOfStudyTable } from "@/db/tables/fields-of-study"; -import { meetings } from "@/db/tables/meetings"; +// import { meetings } from "@/db/tables/meetings"; import { teamsTable } from "@/db/tables/teams"; import { usersTable } from "@/db/tables/users"; +import { applicationsTable } from "@/db/tables/applications"; +import { meetingsTable } from "@/db/tables/meetings"; +import { schoolsTable } from "@/db/tables/schools"; export const seedingTables = { departmentsTable, fieldsOfStudyTable, teamsTable, usersTable, - meetings, + // meetings, //teamUsersTable, these two tables dont work currently //assistantUsersTable, //teamApplicationsTable, expensesTable, + applicationsTable, + // meetingsTable, + // schoolsTable + }; diff --git a/db/tables/meetings.ts b/db/tables/meetings.ts index 94e23e3..2fb5cc2 100644 --- a/db/tables/meetings.ts +++ b/db/tables/meetings.ts @@ -1,17 +1,17 @@ import { mainSchema } from "@/db/tables/schema"; import { relations } from "drizzle-orm"; -import { serial, text } from "drizzle-orm/pg-core"; +import { date, integer, serial, text, timestamp } from "drizzle-orm/pg-core"; import { semestersTable } from "./semesters"; export const meetingsTable = mainSchema.table("meetings", { id: serial("id").primaryKey(), title: text("title").notNull(), description: text("description").notNull(), - semesterId: serial("semesterId") + semesterId: integer("semesterId") .notNull() .references(() => semestersTable.id), - date: text("date").notNull(), - timestart: text("TimeStart").notNull(), + date: date("date").notNull(), + timestart: timestamp("TimeStart").notNull(), timeEnd: text("TimeEnd").notNull(), room: text("room").notNull(), }); @@ -23,4 +23,4 @@ export const meetingsRelations = relations(meetingsTable, ({ one }) => ({ }), })); -export const meetings = relations(meetingsTable, () => ({})); + diff --git a/tsconfig.json b/tsconfig.json index 2fb5978..53819b7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,7 +9,7 @@ "module": "esnext", "skipLibCheck": true, // - "moduleResolution": "node", + "moduleResolution": "bundler", // "target": "es2022", // @@ -31,5 +31,6 @@ "@/lib/*": ["./lib/*"], "@/docs/*": ["./openapi/*"] } + } } From 0762530a4f8dec1d935e5e42f2424c143c020045 Mon Sep 17 00:00:00 2001 From: simenen123 Date: Wed, 8 Oct 2025 18:56:47 +0200 Subject: [PATCH 06/19] =?UTF-8?q?Fix:=20finpussinger=20p=C3=A5=20relations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/tables/meetings.ts | 4 ++-- db/tables/semesters.ts | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/db/tables/meetings.ts b/db/tables/meetings.ts index 2fb5cc2..df6ec5f 100644 --- a/db/tables/meetings.ts +++ b/db/tables/meetings.ts @@ -1,6 +1,6 @@ import { mainSchema } from "@/db/tables/schema"; import { relations } from "drizzle-orm"; -import { date, integer, serial, text, timestamp } from "drizzle-orm/pg-core"; +import { date, integer, serial, text, time, timestamp } from "drizzle-orm/pg-core"; import { semestersTable } from "./semesters"; export const meetingsTable = mainSchema.table("meetings", { @@ -11,7 +11,7 @@ export const meetingsTable = mainSchema.table("meetings", { .notNull() .references(() => semestersTable.id), date: date("date").notNull(), - timestart: timestamp("TimeStart").notNull(), + timestart: time("timeStart").notNull(), timeEnd: text("TimeEnd").notNull(), room: text("room").notNull(), }); diff --git a/db/tables/semesters.ts b/db/tables/semesters.ts index dc9e824..08dcda2 100644 --- a/db/tables/semesters.ts +++ b/db/tables/semesters.ts @@ -10,6 +10,7 @@ import { departmentsTable } from "./departments"; import { mainSchema } from "./schema"; import { schoolSemesterAssistantsTable } from "./school-semester-assistant"; import { teamSemesterUsersTable } from "./team-semester-user"; +import { meetingsTable } from "./meetings"; export const semestersTable = mainSchema.table("semesters", { id: serial("id").primaryKey(), @@ -43,5 +44,6 @@ export const semestersRelations = relations( }), schoolAssistants: many(schoolSemesterAssistantsTable), teamUsers: many(teamSemesterUsersTable), + meetings: many(meetingsTable), }), ); From 4f696eb6865c91fc607ba95c4efc69d0b6f7a7f1 Mon Sep 17 00:00:00 2001 From: simenen123 Date: Mon, 27 Oct 2025 16:48:58 +0100 Subject: [PATCH 07/19] fix: name conventions --- db/tables/meetings.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/tables/meetings.ts b/db/tables/meetings.ts index df6ec5f..f38435c 100644 --- a/db/tables/meetings.ts +++ b/db/tables/meetings.ts @@ -11,7 +11,7 @@ export const meetingsTable = mainSchema.table("meetings", { .notNull() .references(() => semestersTable.id), date: date("date").notNull(), - timestart: time("timeStart").notNull(), + timeStart: time("timeStart").notNull(), timeEnd: text("TimeEnd").notNull(), room: text("room").notNull(), }); From f688eadc5db2cd8f52bf56029b517ae666cadc8f Mon Sep 17 00:00:00 2001 From: simenen123 Date: Mon, 27 Oct 2025 16:56:09 +0100 Subject: [PATCH 08/19] =?UTF-8?q?Fix:=20gjort=20ting=20i=20alfabetisk=20re?= =?UTF-8?q?kkef=C3=B8lge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/seeding/seeding-tables.ts | 6 +++--- db/tables/meetings.ts | 7 ++++++- db/tables/semesters.ts | 3 ++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/db/seeding/seeding-tables.ts b/db/seeding/seeding-tables.ts index 2c3c2fd..29dcea5 100644 --- a/db/seeding/seeding-tables.ts +++ b/db/seeding/seeding-tables.ts @@ -1,12 +1,12 @@ +import { applicationsTable } from "@/db/tables/applications"; import { departmentsTable } from "@/db/tables/departments"; import { expensesTable } from "@/db/tables/expenses"; import { fieldsOfStudyTable } from "@/db/tables/fields-of-study"; // import { meetings } from "@/db/tables/meetings"; import { teamsTable } from "@/db/tables/teams"; import { usersTable } from "@/db/tables/users"; -import { applicationsTable } from "@/db/tables/applications"; -import { meetingsTable } from "@/db/tables/meetings"; -import { schoolsTable } from "@/db/tables/schools"; +// import { meetingsTable } from "@/db/tables/meetings"; +// import { schoolsTable } from "@/db/tables/schools"; export const seedingTables = { departmentsTable, diff --git a/db/tables/meetings.ts b/db/tables/meetings.ts index f38435c..c6740eb 100644 --- a/db/tables/meetings.ts +++ b/db/tables/meetings.ts @@ -1,6 +1,11 @@ import { mainSchema } from "@/db/tables/schema"; import { relations } from "drizzle-orm"; -import { date, integer, serial, text, time, timestamp } from "drizzle-orm/pg-core"; +import { date, + integer, + serial, + text, + time + } from "drizzle-orm/pg-core"; import { semestersTable } from "./semesters"; export const meetingsTable = mainSchema.table("meetings", { diff --git a/db/tables/semesters.ts b/db/tables/semesters.ts index 08dcda2..3140604 100644 --- a/db/tables/semesters.ts +++ b/db/tables/semesters.ts @@ -7,10 +7,11 @@ import { text, } from "drizzle-orm/pg-core"; import { departmentsTable } from "./departments"; +import { meetingsTable } from "./meetings"; import { mainSchema } from "./schema"; import { schoolSemesterAssistantsTable } from "./school-semester-assistant"; import { teamSemesterUsersTable } from "./team-semester-user"; -import { meetingsTable } from "./meetings"; + export const semestersTable = mainSchema.table("semesters", { id: serial("id").primaryKey(), From 0ae1d3a7d9d896c47172da0a7e04b848f4ed67a7 Mon Sep 17 00:00:00 2001 From: simenen123 Date: Mon, 27 Oct 2025 17:00:21 +0100 Subject: [PATCH 09/19] fix: fikset inlines(biome kan suge kuken min) --- db/seeding/seeding-tables.ts | 3 --- db/tables/meetings.ts | 7 +------ db/tables/semesters.ts | 1 - tsconfig.json | 1 - 4 files changed, 1 insertion(+), 11 deletions(-) diff --git a/db/seeding/seeding-tables.ts b/db/seeding/seeding-tables.ts index 29dcea5..12baecf 100644 --- a/db/seeding/seeding-tables.ts +++ b/db/seeding/seeding-tables.ts @@ -2,11 +2,8 @@ import { applicationsTable } from "@/db/tables/applications"; import { departmentsTable } from "@/db/tables/departments"; import { expensesTable } from "@/db/tables/expenses"; import { fieldsOfStudyTable } from "@/db/tables/fields-of-study"; -// import { meetings } from "@/db/tables/meetings"; import { teamsTable } from "@/db/tables/teams"; import { usersTable } from "@/db/tables/users"; -// import { meetingsTable } from "@/db/tables/meetings"; -// import { schoolsTable } from "@/db/tables/schools"; export const seedingTables = { departmentsTable, diff --git a/db/tables/meetings.ts b/db/tables/meetings.ts index c6740eb..9720e89 100644 --- a/db/tables/meetings.ts +++ b/db/tables/meetings.ts @@ -1,11 +1,6 @@ import { mainSchema } from "@/db/tables/schema"; import { relations } from "drizzle-orm"; -import { date, - integer, - serial, - text, - time - } from "drizzle-orm/pg-core"; +import { date, integer, serial, text, time } from "drizzle-orm/pg-core"; import { semestersTable } from "./semesters"; export const meetingsTable = mainSchema.table("meetings", { diff --git a/db/tables/semesters.ts b/db/tables/semesters.ts index 3140604..8233ca7 100644 --- a/db/tables/semesters.ts +++ b/db/tables/semesters.ts @@ -12,7 +12,6 @@ import { mainSchema } from "./schema"; import { schoolSemesterAssistantsTable } from "./school-semester-assistant"; import { teamSemesterUsersTable } from "./team-semester-user"; - export const semestersTable = mainSchema.table("semesters", { id: serial("id").primaryKey(), lastSemesterId: integer("lastSemesterId").references( diff --git a/tsconfig.json b/tsconfig.json index 53819b7..b28f257 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -31,6 +31,5 @@ "@/lib/*": ["./lib/*"], "@/docs/*": ["./openapi/*"] } - } } From 54b69e1bcbe8e3a23c76991cd20074552c96df64 Mon Sep 17 00:00:00 2001 From: simenen123 Date: Mon, 27 Oct 2025 17:02:31 +0100 Subject: [PATCH 10/19] fix: biome --- db/seeding/seeding-tables.ts | 1 - db/tables/meetings.ts | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/db/seeding/seeding-tables.ts b/db/seeding/seeding-tables.ts index 12baecf..e7340c5 100644 --- a/db/seeding/seeding-tables.ts +++ b/db/seeding/seeding-tables.ts @@ -18,5 +18,4 @@ export const seedingTables = { applicationsTable, // meetingsTable, // schoolsTable - }; diff --git a/db/tables/meetings.ts b/db/tables/meetings.ts index 9720e89..64d0053 100644 --- a/db/tables/meetings.ts +++ b/db/tables/meetings.ts @@ -21,6 +21,4 @@ export const meetingsRelations = relations(meetingsTable, ({ one }) => ({ fields: [meetingsTable.semesterId], // FK i meetings references: [semestersTable.id], // PK i semesters }), -})); - - +})); \ No newline at end of file From 376460980840a947bb9979cf6aaceb03b8bb0375 Mon Sep 17 00:00:00 2001 From: simenen123 Date: Mon, 27 Oct 2025 17:04:51 +0100 Subject: [PATCH 11/19] fix: biome --- db/tables/meetings.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/tables/meetings.ts b/db/tables/meetings.ts index 64d0053..b4fb104 100644 --- a/db/tables/meetings.ts +++ b/db/tables/meetings.ts @@ -21,4 +21,4 @@ export const meetingsRelations = relations(meetingsTable, ({ one }) => ({ fields: [meetingsTable.semesterId], // FK i meetings references: [semestersTable.id], // PK i semesters }), -})); \ No newline at end of file +})); From 8c6f78cf1d92a716bc4b64309006e13eb2795aa9 Mon Sep 17 00:00:00 2001 From: simenen123 Date: Mon, 27 Oct 2025 17:20:16 +0100 Subject: [PATCH 12/19] fix: fjernet stor T --- db/tables/meetings.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/tables/meetings.ts b/db/tables/meetings.ts index b4fb104..f82c9d0 100644 --- a/db/tables/meetings.ts +++ b/db/tables/meetings.ts @@ -12,7 +12,7 @@ export const meetingsTable = mainSchema.table("meetings", { .references(() => semestersTable.id), date: date("date").notNull(), timeStart: time("timeStart").notNull(), - timeEnd: text("TimeEnd").notNull(), + timeEnd: text("timeEnd").notNull(), room: text("room").notNull(), }); From 6a000c8ebe215220ded3c2f93fcc615a2d1b04f6 Mon Sep 17 00:00:00 2001 From: simenen123 Date: Thu, 29 Jan 2026 18:46:58 +0100 Subject: [PATCH 13/19] fix:seeding now works. Also updated commands --- db/seeding/dbDiagramCode.txt | 250 ++++++++++++++++++ db/seeding/seed.sql | 479 +++++++++++++++++++++++++++++++++++ db/tables/applications.ts | 6 +- package.json | 3 +- 4 files changed, 735 insertions(+), 3 deletions(-) create mode 100644 db/seeding/dbDiagramCode.txt diff --git a/db/seeding/dbDiagramCode.txt b/db/seeding/dbDiagramCode.txt new file mode 100644 index 0000000..c7478aa --- /dev/null +++ b/db/seeding/dbDiagramCode.txt @@ -0,0 +1,250 @@ +Copy the code below into https://dbdiagram.io/d to map +out the different tables and their relations. + + +// Enums +Enum gender { + female + male + other +} + +Enum size { + small + medium + large +} + +Enum city { + Trondheim + Ås + Bergen + Tromsø +} + +/* + Tables +*/ + +Table users { + id int [pk, increment] + firstName varchar + lastName varchar + fieldOfStudyId int + accountNumber varchar [unique] // bankAccountNumber in code + personalEmail varchar [unique] + phoneNumber varchar [unique] +} + +Table teamUsers { + id int [pk] // also references users.id (see refs) + teamId int + username varchar [unique] +} + +Table assistantUsers { + id int [pk] // references users.id +} + +Table teams { + id int [pk, increment] + departmentId int + name varchar [unique] + email varchar [unique] + description text + shortDescription text + acceptApplication boolean + active boolean + deadline datetime +} + +Table departments { + id int [pk, increment] + city city +} + +Table fieldsOfStudy { + id int [pk, increment] + studyCode varchar [unique] + name varchar [unique] + departmentId int +} + +Table semesters { + id int [pk, increment] + lastSemesterId int // self reference -> semesters.id + semesterStartDate date + semesterEndDate date + recruitmentStartDate date + recruitmentEndDate date + departmentId int + name varchar +} + +Table applications { + id int [pk, increment] + firstname varchar + lastname varchar + gender gender + email varchar + fieldOfStudyId int + yearOfStudy int + phonenumber varchar + semester int + submitDate date +} + +Table teamApplications { + id int [pk] // part of composite PK + applicationParentId int [pk] // part of composite PK + teamId int + motivationText text + biography text + teamInterest boolean +} + +Table assistantApplications { + id int [pk] // references applications.id +} + +Table interviewSchemas { + id int [pk, increment] + jsonSchema json +} + +Table interviews { + id int [pk, increment] + applicationId int + interviewSchemaId int + interviewAnswers json + isCancelled boolean + plannedTime datetime + timeFinished datetime +} + +Table interviewHolders { + interviewId int [pk] + interviewHolderId int [pk] +} + +Table teamSemesterUser { + teamId int + semesterId int + teamUserId int +} + +Table schools { + id int [pk, increment] + departmentId int + name varchar + contactPersonName varchar + contactPersonPhoneNumber varchar + contactpersonEmail varchar + isInternational boolean +} + +Table schoolAssignments { + schoolId int + semesterId int [pk] + assistantUserId int [pk] +} + +Table meetings { + id int [pk, increment] + title varchar + description text + semesterId int + date date + timeStart time + timeEnd text + room text +} + +Table sponsors { + id int [pk, increment] + name varchar + homePageURL varchar + startTime datetime + endTime datetime + size size + spesificDepartmentId int +} + +Table expenses { + id int [pk, increment] + userId int + title varchar + description text + moneyAmount numeric(12,2) + accountNumber varchar + purchaseTime datetime + submitTime datetime + isAccepted boolean + handlingTime datetime +} + +/* + Relationships (foreign keys & references) +*/ + +// users +Ref: users.fieldOfStudyId > fieldsOfStudy.id +// teamUsers / users +Ref: teamUsers.id > users.id +Ref: teamUsers.teamId > teams.id + +// assistantUsers -> users +Ref: assistantUsers.id > users.id + +// teams -> departments +Ref: teams.departmentId > departments.id + +// fieldsOfStudy -> departments +Ref: fieldsOfStudy.departmentId > departments.id + +// departments -> semesters (department has many semesters) +Ref: semesters.departmentId > departments.id + +// semesters self reference +Ref: semesters.lastSemesterId > semesters.id + +// applications -> fieldsOfStudy, semesters +Ref: applications.fieldOfStudyId > fieldsOfStudy.id +Ref: applications.semester > semesters.id + +// teamApplications -> applications, teams +Ref: teamApplications.applicationParentId > applications.id +Ref: teamApplications.teamId > teams.id + +// assistantApplications has PK referencing applications.id +Ref: assistantApplications.id > applications.id + +// interviews -> assistantApplications, interviewSchemas +Ref: interviews.applicationId > assistantApplications.id +Ref: interviews.interviewSchemaId > interviewSchemas.id + +// interviewHolders -> interviews, teamUsers +Ref: interviewHolders.interviewId > interviews.id +Ref: interviewHolders.interviewHolderId > teamUsers.id + +// teamSemesterUser -> teams, semesters, teamUsers +Ref: teamSemesterUser.teamId > teams.id +Ref: teamSemesterUser.semesterId > semesters.id +Ref: teamSemesterUser.teamUserId > teamUsers.id + +// schools -> departments +Ref: schools.departmentId > departments.id + +// schoolAssignments -> schools, semesters, assistantUsers +Ref: schoolAssignments.schoolId > schools.id +Ref: schoolAssignments.semesterId > semesters.id +Ref: schoolAssignments.assistantUserId > assistantUsers.id + +// meetings -> semesters +Ref: meetings.semesterId > semesters.id + +// sponsors -> departments +Ref: sponsors.spesificDepartmentId > departments.id + +// expenses -> users +Ref: expenses.userId > users.id diff --git a/db/seeding/seed.sql b/db/seeding/seed.sql index e69de29..0a57afa 100644 --- a/db/seeding/seed.sql +++ b/db/seeding/seed.sql @@ -0,0 +1,479 @@ +BEGIN; + +-- Departments +INSERT INTO "mainSchema"."departments" ("id", "city") VALUES + (1, 'Trondheim'), + (2, 'Bergen') +ON CONFLICT ("id") DO NOTHING; + +-- Fields of study +INSERT INTO "mainSchema"."fieldsOfStudy" ("id", "studyCode", "name", "departmentId") VALUES + (1, 'MTKJ', 'Mechanical Engineering', 1), + (2, 'INF101', 'Computer Science', 1), + (3, 'BIO200', 'Marine Biology', 2) +ON CONFLICT ("id") DO NOTHING; +/* */ +-- Teams +INSERT INTO "mainSchema"."teams" + ("id", "departmentId", "name", "email", "description", "shortDescription", "acceptApplication", "active", "deadline") +VALUES + ( + 1, + 1, + 'Logistics Trondheim', + 'logistics.trondheim@vektor.no', + 'Handles classroom logistics in Trondheim.', + 'Logistics Trondheim', + true, + true, + '2023-12-15 23:59:00' + ), + ( + 2, + 1, + 'Public Relations Trondheim', + 'pr.trondheim@vektor.no', + 'Showcases Vektor at events and online.', + 'PR Trondheim', + true, + true, + '2023-12-20 23:59:00' + ), + ( + 3, + 2, + 'Recruitment Bergen', + 'recruitment.bergen@vektor.no', + 'Coordinates mentor recruitment in Bergen.', + 'Recruitment Bergen', + true, + false, + '2024-05-01 23:59:00' + ) +ON CONFLICT ("id") DO NOTHING; + +-- Semesters +INSERT INTO "mainSchema"."semesters" + ( + "id", + "lastSemesterId", + "semesterStartDate", + "semesterEndDate", + "recruitmentStartDate", + "recruitmentEndDate", + "departmentId", + "name" + ) +VALUES + ( + 1, + NULL, + '2024-01-08', + '2024-06-15', + '2023-11-01', + '2024-01-01', + 1, + 'Spring 2024 Trondheim' + ), + ( + 2, + 1, + '2024-08-19', + '2024-12-18', + '2024-04-15', + '2024-06-01', + 1, + 'Fall 2024 Trondheim' + ), + ( + 3, + NULL, + '2024-01-10', + '2024-06-20', + '2023-11-15', + '2024-01-05', + 2, + 'Spring 2024 Bergen' + ) +ON CONFLICT ("id") DO NOTHING; + +-- Meetings +INSERT INTO "mainSchema"."meetings" + ("id", "title", "description", "semesterId", "date", "timeStart", "timeEnd", "room") +VALUES + ( + 1, + 'Mentor Kickoff', + 'Kickoff for returning and new mentors.', + 1, + '2024-01-15', + '17:00:00', + '19:00', + 'Gløshaugen A1' + ), + ( + 2, + 'Recruitment Retrospective', + 'Wrap-up for the fall recruitment.', + 2, + '2024-09-05', + '18:00:00', + '20:00', + 'IT-bygget 42' + ) +ON CONFLICT ("id") DO NOTHING; + +-- Schools +INSERT INTO "mainSchema"."schools" + ( + "id", + "departmentId", + "name", + "contactPersonName", + "contactPersonPhoneNumber", + "contactpersonEmail", + "isInternational" + ) +VALUES + ( + 1, + 1, + 'Charlottenlund ungdomsskole', + 'Ingrid Lien', + '93000001', + 'ingrid.lien@charlottenlund.no', + false + ), + ( + 2, + 2, + 'International School Bergen', + 'Paul Jensen', + '93000002', + 'paul.jensen@isb.no', + true + ) +ON CONFLICT ("id") DO NOTHING; + +-- Users +INSERT INTO "mainSchema"."users" + ( + "id", + "firstName", + "lastName", + "fieldOfStudyId", + "accountNumber", + "personalEmail", + "phoneNumber" + ) +VALUES + ( + 1, + 'Frida', + 'Larsen', + 1, + '12345678901', + 'frida.larsen@example.com', + '40000001' + ), + ( + 2, + 'Eirik', + 'Sund', + 2, + '23456789012', + 'eirik.sund@example.com', + '40000002' + ), + ( + 3, + 'Maja', + 'Solheim', + 3, + '34567890123', + 'maja.solheim@example.com', + '40000003' + ) +ON CONFLICT ("id") DO NOTHING; + +-- Team users +INSERT INTO "mainSchema"."teamUsers" ("id", "teamId", "username") VALUES + (1, 1, 'frida.l'), + (2, 2, 'eirik.s'), + (3, 3, 'maja.s') +ON CONFLICT ("id") DO NOTHING; + +-- Assistant users +INSERT INTO "mainSchema"."assistantUsers" ("id") VALUES + (2), + (3) +ON CONFLICT ("id") DO NOTHING; + +-- Applications +INSERT INTO "mainSchema"."applications" + ( + "id", + "firstname", + "lastname", + "gender", + "email", + "fieldOfStudyId", + "yearOfStudy", + "phonenumber", + "submitDate" + ) +VALUES + ( + 1, + 'Ola', + 'Nordmann', + 'male', + 'ola.nordmann@example.com', + 1, + 2, + '90000001', + '2023-11-25' + ), + ( + 2, + 'Kari', + 'Hansen', + 'female', + 'kari.hansen@example.com', + 2, + 1, + '90000002', + '2023-11-28' + ), + ( + 3, + 'Noor', + 'Ali', + 'other', + 'noor.ali@example.com', + 3, + 3, + '90000003', + '2023-12-02' + ) +ON CONFLICT ("id") DO NOTHING; + +-- Team applications +INSERT INTO "mainSchema"."teamApplications" + ( + "id", + "applicationParentId", + "teamId", + "motivationText", + "biography", + "teamInterest" + ) +VALUES + ( + 1, + 1, + 1, + 'I love planning lessons and logistics.', + 'Second-year mechanical engineering student.', + true + ), + ( + 2, + 2, + 2, + 'I want to tell new students about Vektor.', + 'First-year computer science student.', + true + ), + ( + 3, + 3, + 3, + 'I am moving to Bergen and want to stay involved.', + 'Third-year marine biology student.', + false + ) +ON CONFLICT ("id", "applicationParentId") DO NOTHING; + +-- Assistant applications +INSERT INTO "mainSchema"."assistantApplications" ("id") VALUES + (1), + (2) +ON CONFLICT ("id") DO NOTHING; + +-- Interview schemas +INSERT INTO "mainSchema"."interviewSchemas" ("id", "jsonSchema") VALUES + ( + 1, + '{"title":"Assistant Interview","type":"object","properties":{"motivation":{"type":"string"}}}'::json + ), + ( + 2, + '{"title":"Follow-up Interview","type":"object","properties":{"evaluation":{"type":"number"}}}'::json + ) +ON CONFLICT ("id") DO NOTHING; + +-- Interviews +INSERT INTO "mainSchema"."interviews" + ( + "id", + "applicationId", + "interviewSchemaId", + "interviewAnswers", + "isCancelled", + "plannedTime", + "timeFinished" + ) +VALUES + ( + 1, + 1, + 1, + '{"motivation":"Help pupils learn math","score":5}'::json, + false, + '2024-01-20 10:00:00', + '2024-01-20 11:00:00' + ), + ( + 2, + 2, + 2, + '{"evaluation":3,"notes":"Needs more classroom experience"}'::json, + false, + '2024-01-22 14:00:00', + '2024-01-22 15:00:00' + ) +ON CONFLICT ("id") DO NOTHING; + +-- Interview holders +INSERT INTO "mainSchema"."interviewHolders" ("integerId", "interviewHolderId") VALUES + (1, 1), + (2, 2) +ON CONFLICT ("integerId", "interviewHolderId") DO NOTHING; + +-- Expenses +INSERT INTO "mainSchema"."expenses" + ( + "id", + "userId", + "title", + "description", + "moneyAmount", + "accountNumber", + "purchaseTime", + "submitTime", + "isAccepted", + "handlingTime" + ) +VALUES + ( + 1, + 1, + 'Whiteboard markers', + 'Marker pack for school visit', + 250.00, + '50123456789', + '2024-02-01 12:00:00', + '2024-02-02 09:00:00', + true, + '2024-02-05 10:00:00' + ), + ( + 2, + 2, + 'Bus tickets', + 'Travel to International School Bergen', + 180.50, + '50123456780', + '2024-02-10 08:15:00', + '2024-02-10 20:00:00', + false, + '2024-02-12 09:30:00' + ) +ON CONFLICT ("id") DO NOTHING; + +-- Sponsors +INSERT INTO "mainSchema"."sponsors" + ( + "id", + "name", + "homePageURL", + "startTime", + "endTime", + "size", + "spesificDepartmentId" + ) +VALUES + ( + 1, + 'TechCorp', + 'https://techcorp.example.com', + '2024-01-01 00:00:00', + '2024-12-31 23:59:00', + 'medium', + 1 + ), + ( + 2, + 'EduFuture', + 'https://edufuture.example.com', + '2024-03-01 00:00:00', + NULL, + 'small', + NULL + ) +ON CONFLICT ("id") DO NOTHING; + +-- School assignments +INSERT INTO "mainSchema"."schoolAssignments" ("schoolId", "semesterId", "userId") VALUES + (1, 1, 2), + (2, 3, 3) +ON CONFLICT ("semesterId", "userId") DO NOTHING; + +-- Team members per semester +INSERT INTO "mainSchema"."teamSemesterUser" ("teamId", "semesterId", "teamUserId") +SELECT 1, 1, 1 +WHERE NOT EXISTS ( + SELECT 1 + FROM "mainSchema"."teamSemesterUser" + WHERE "teamId" = 1 + AND "semesterId" = 1 + AND "teamUserId" = 1 +); + +INSERT INTO "mainSchema"."teamSemesterUser" ("teamId", "semesterId", "teamUserId") +SELECT 2, 2, 2 +WHERE NOT EXISTS ( + SELECT 1 + FROM "mainSchema"."teamSemesterUser" + WHERE "teamId" = 2 + AND "semesterId" = 2 + AND "teamUserId" = 2 +); + +INSERT INTO "mainSchema"."teamSemesterUser" ("teamId", "semesterId", "teamUserId") +SELECT 3, 3, 3 +WHERE NOT EXISTS ( + SELECT 1 + FROM "mainSchema"."teamSemesterUser" + WHERE "teamId" = 3 + AND "semesterId" = 3 + AND "teamUserId" = 3 +); + +-- Align sequences so future inserts can rely on defaults +SELECT setval('"mainSchema"."departments_id_seq"', COALESCE((SELECT MAX("id") FROM "mainSchema"."departments"), 0), true); +SELECT setval('"mainSchema"."fieldsOfStudy_id_seq"', COALESCE((SELECT MAX("id") FROM "mainSchema"."fieldsOfStudy"), 0), true); +SELECT setval('"mainSchema"."teams_id_seq"', COALESCE((SELECT MAX("id") FROM "mainSchema"."teams"), 0), true); +SELECT setval('"mainSchema"."semesters_id_seq"', COALESCE((SELECT MAX("id") FROM "mainSchema"."semesters"), 0), true); +SELECT setval('"mainSchema"."meetings_id_seq"', COALESCE((SELECT MAX("id") FROM "mainSchema"."meetings"), 0), true); +SELECT setval('"mainSchema"."schools_id_seq"', COALESCE((SELECT MAX("id") FROM "mainSchema"."schools"), 0), true); +SELECT setval('"mainSchema"."users_id_seq"', COALESCE((SELECT MAX("id") FROM "mainSchema"."users"), 0), true); +SELECT setval('"mainSchema"."applications_id_seq"', COALESCE((SELECT MAX("id") FROM "mainSchema"."applications"), 0), true); +SELECT setval('"mainSchema"."teamApplications_id_seq"', COALESCE((SELECT MAX("id") FROM "mainSchema"."teamApplications"), 0), true); +SELECT setval('"mainSchema"."interviewSchemas_id_seq"', COALESCE((SELECT MAX("id") FROM "mainSchema"."interviewSchemas"), 0), true); +SELECT setval('"mainSchema"."interviews_id_seq"', COALESCE((SELECT MAX("id") FROM "mainSchema"."interviews"), 0), true); +SELECT setval('"mainSchema"."expenses_id_seq"', COALESCE((SELECT MAX("id") FROM "mainSchema"."expenses"), 0), true); +SELECT setval('"mainSchema"."sponsors_id_seq"', COALESCE((SELECT MAX("id") FROM "mainSchema"."sponsors"), 0), true); + +COMMIT; diff --git a/db/tables/applications.ts b/db/tables/applications.ts index 264868c..f60dfbc 100644 --- a/db/tables/applications.ts +++ b/db/tables/applications.ts @@ -45,7 +45,6 @@ export const applicationsRelations = relations( references: [assistantApplicationsTable.id], }), teamApplication: many(teamApplicationsTable), - interview: many(interviewsTable), }), ); @@ -98,6 +97,9 @@ export const assistantApplicationsRelations = relations( fields: [assistantApplicationsTable.id], references: [applicationsTable.id], }), - interview: one(interviewsTable), + interview: one(interviewsTable, { + fields: [assistantApplicationsTable.id], + references: [interviewsTable.applicationId], + }), }), ); diff --git a/package.json b/package.json index f5249fe..8a6f82c 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "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", + "db:seed": "powershell -NoProfile -Command \"Get-Content db\\\\seeding\\\\seed.sql | docker compose exec -T db psql -U postgres -d vektorPostgres\"", + "db:seed:unix": "docker compose exec -T db psql -U postgres -d vektorPostgres < db/seeding/seed.sql", "docs:generate": "tsx ./openapi/generate-document.ts" }, "license": "ISC", From 87e908939458f9d7b69dce21a2fb68bd99155e30 Mon Sep 17 00:00:00 2001 From: simenen123 Date: Thu, 5 Feb 2026 18:08:32 +0100 Subject: [PATCH 14/19] fix: shouldve been a small P in "vektorpostgres", with the seeding command. --- package.json | 110 +++++++++++++++++++++++++-------------------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/package.json b/package.json index 8a6f82c..3b9dde5 100644 --- a/package.json +++ b/package.json @@ -1,57 +1,57 @@ { - "name": "vektor-api", - "version": "0.0.1", - "description": "", - "main": "./src/main.ts", - "type": "module", - "scripts": { - "dev:once": "tsx ./src/main.ts", - "dev": "tsx watch ./src/main.ts", - "build": "tsc --project ./tsconfig.json && tsc-alias --project ./tsconfig.json --resolve-full-paths", - "start": "node ./build/src/main.js", - "prod": "pnpm build && pnpm start", - "test": "tsc --noEmit && node --import tsx --test --test-force-exit ./src/test/*.ts", - "format": "biome format --write", - "lint": "biome lint --write", - "check": "biome check --write", - "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": "powershell -NoProfile -Command \"Get-Content db\\\\seeding\\\\seed.sql | docker compose exec -T db psql -U postgres -d vektorPostgres\"", - "db:seed:unix": "docker compose exec -T db psql -U postgres -d vektorPostgres < db/seeding/seed.sql", - "docs:generate": "tsx ./openapi/generate-document.ts" - }, - "license": "ISC", - "dependencies": { - "cors": "^2.8.5", - "dotenv": "^16.4.7", - "drizzle-orm": "^0.33.0", - "drizzle-seed": "^0.3.1", - "drizzle-zod": "^0.5.1", - "express": "^5.1.0", - "express-zod-safe": "^1.3.3", - "pg": "^8.14.1", - "swagger-jsdoc": "^6.2.8", - "validator": "^13.15.0", - "zod": "^3.24.2", - "zod-openapi": "^3.3.0", - "zod-validation-error": "^3.4.0" - }, - "devDependencies": { - "@biomejs/biome": "1.9.3", - "@types/cors": "^2.8.17", - "@types/express": "^4.17.21", - "@types/node": "^22.14.0", - "@types/pg": "^8.11.11", - "@types/supertest": "^6.0.3", - "@types/swagger-jsdoc": "^6.0.4", - "@types/validator": "^13.12.3", - "drizzle-kit": "^0.24.2", - "supertest": "^7.1.0", - "tsc-alias": "^1.8.13", - "tsx": "^4.19.3", - "typescript": "^5.8.2", - "yaml": "^2.7.1" - }, - "packageManager": "pnpm@10.15.0+sha512.486ebc259d3e999a4e8691ce03b5cac4a71cbeca39372a9b762cb500cfdf0873e2cb16abe3d951b1ee2cf012503f027b98b6584e4df22524e0c7450d9ec7aa7b" + "name": "vektor-api", + "version": "0.0.1", + "description": "", + "main": "./src/main.ts", + "type": "module", + "scripts": { + "dev:once": "tsx ./src/main.ts", + "dev": "tsx watch ./src/main.ts", + "build": "tsc --project ./tsconfig.json && tsc-alias --project ./tsconfig.json --resolve-full-paths", + "start": "node ./build/src/main.js", + "prod": "pnpm build && pnpm start", + "test": "tsc --noEmit && node --import tsx --test --test-force-exit ./src/test/*.ts", + "format": "biome format --write", + "lint": "biome lint --write", + "check": "biome check --write", + "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": "powershell -NoProfile -Command \"Get-Content db\\\\seeding\\\\seed.sql | docker compose exec -T db psql -U postgres -d vektorpostgres\"", + "db:seed:unix": "sudo docker compose exec -T db psql -U postgres -d vektorpostgres < db/seeding/seed.sql", + "docs:generate": "tsx ./openapi/generate-document.ts" + }, + "license": "ISC", + "dependencies": { + "cors": "^2.8.5", + "dotenv": "^16.4.7", + "drizzle-orm": "^0.33.0", + "drizzle-seed": "^0.3.1", + "drizzle-zod": "^0.5.1", + "express": "^5.1.0", + "express-zod-safe": "^1.3.3", + "pg": "^8.14.1", + "swagger-jsdoc": "^6.2.8", + "validator": "^13.15.0", + "zod": "^3.24.2", + "zod-openapi": "^3.3.0", + "zod-validation-error": "^3.4.0" + }, + "devDependencies": { + "@biomejs/biome": "1.9.3", + "@types/cors": "^2.8.17", + "@types/express": "^4.17.21", + "@types/node": "^22.14.0", + "@types/pg": "^8.11.11", + "@types/supertest": "^6.0.3", + "@types/swagger-jsdoc": "^6.0.4", + "@types/validator": "^13.12.3", + "drizzle-kit": "^0.24.2", + "supertest": "^7.1.0", + "tsc-alias": "^1.8.13", + "tsx": "^4.19.3", + "typescript": "^5.8.2", + "yaml": "^2.7.1" + }, + "packageManager": "pnpm@10.15.0+sha512.486ebc259d3e999a4e8691ce03b5cac4a71cbeca39372a9b762cb500cfdf0873e2cb16abe3d951b1ee2cf012503f027b98b6584e4df22524e0c7450d9ec7aa7b" } From 23ad411bd1c6e1963b3042d976bd73f7995e1b2a Mon Sep 17 00:00:00 2001 From: simenen123 Date: Thu, 5 Feb 2026 18:12:46 +0100 Subject: [PATCH 15/19] fix: updated the readme --- README.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 79f84f1..d72a7a3 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Kildekoden er på engelsk. Kildekoden er på engelsk For at testene skal fungere, bruk node version >=22 + - `/` - `db/` database modul - `lib/` generell delt kode @@ -115,7 +116,7 @@ For å kjøre appen og migrere databasen, se [scripts](#database). ### Imports Autocomplete -[`christian-kohler.npm-intellisense`]() +[`christian-kohler.npm-intellisense`](https://marketplace.visualstudio.com/items?itemName=christian-kohler.npm-intellisense) ### Formatting and Linting @@ -226,12 +227,19 @@ Open the database in the drizzle studio interface: pnpm db:studio ``` -Seed the database with random, but deterministic values: +Seed the database with values: +for windows: ```sh pnpm db:seed ``` +for linux and mac: + +```sh +db:seed:unix +``` + ## Info -Tabellnavn er i *flertall* (users > user) +Tabellnavn er i _flertall_ (users > user) From 7276d6f0e9af9bee029dfa9618530cab99605242 Mon Sep 17 00:00:00 2001 From: simenen123 Date: Mon, 16 Feb 2026 17:31:05 +0100 Subject: [PATCH 16/19] fix: .env.example was different than the readme documentation leading to seeding command failing --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 739e0a4..e126f49 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,7 @@ DATABASE_SSL_OPTION=false DATABASE_HOST=localhost DATABASE_PORT=5432 -DATABASE_NAME=vektorPostgres +DATABASE_NAME=vektorpostgres DATABASE_USER=postgres DATABASE_PASSWORD=pass123 From a129bc907b699cabf25b2240b8bee6813d089b85 Mon Sep 17 00:00:00 2001 From: simenen123 Date: Mon, 16 Feb 2026 17:48:01 +0100 Subject: [PATCH 17/19] Revert "fix: .env.example was different than the readme documentation leading to seeding command failing" This reverts commit 7276d6f0e9af9bee029dfa9618530cab99605242. --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index e126f49..739e0a4 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,7 @@ DATABASE_SSL_OPTION=false DATABASE_HOST=localhost DATABASE_PORT=5432 -DATABASE_NAME=vektorpostgres +DATABASE_NAME=vektorPostgres DATABASE_USER=postgres DATABASE_PASSWORD=pass123 From eff0f1ddd29f2a4b7c6e2aff0dc079c0972684a7 Mon Sep 17 00:00:00 2001 From: simenen123 Date: Mon, 16 Feb 2026 17:57:40 +0100 Subject: [PATCH 18/19] fix: .env example now has correct config --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 739e0a4..e126f49 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,7 @@ DATABASE_SSL_OPTION=false DATABASE_HOST=localhost DATABASE_PORT=5432 -DATABASE_NAME=vektorPostgres +DATABASE_NAME=vektorpostgres DATABASE_USER=postgres DATABASE_PASSWORD=pass123 From f477f5b920c0b2bc51a42de7b42431571787d16a Mon Sep 17 00:00:00 2001 From: simenen123 Date: Mon, 23 Feb 2026 18:05:46 +0100 Subject: [PATCH 19/19] fix: the .env example is updated to correct values. Also fixed and added the db:unseed:unix script. --- .env.example | 2 +- README.md | 6 +++++- db/seeding/removeData.sql | 25 +++++++++++++++++++++++++ package.json | 6 ++++-- 4 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 db/seeding/removeData.sql diff --git a/.env.example b/.env.example index e126f49..739e0a4 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,7 @@ DATABASE_SSL_OPTION=false DATABASE_HOST=localhost DATABASE_PORT=5432 -DATABASE_NAME=vektorpostgres +DATABASE_NAME=vektorPostgres DATABASE_USER=postgres DATABASE_PASSWORD=pass123 diff --git a/README.md b/README.md index d72a7a3..0f29691 100644 --- a/README.md +++ b/README.md @@ -237,7 +237,11 @@ pnpm db:seed for linux and mac: ```sh -db:seed:unix +pnpm db seed:unix +``` + +```sh +pnpm db seed:unix ``` ## Info diff --git a/db/seeding/removeData.sql b/db/seeding/removeData.sql new file mode 100644 index 0000000..7c0f57c --- /dev/null +++ b/db/seeding/removeData.sql @@ -0,0 +1,25 @@ +BEGIN; + +TRUNCATE TABLE + "mainSchema"."interviewHolders", + "mainSchema"."teamSemesterUser", + "mainSchema"."schoolAssignments", + "mainSchema"."interviews", + "mainSchema"."assistantApplications", + "mainSchema"."teamApplications", + "mainSchema"."applications", + "mainSchema"."assistantUsers", + "mainSchema"."teamUsers", + "mainSchema"."expenses", + "mainSchema"."sponsors", + "mainSchema"."users", + "mainSchema"."meetings", + "mainSchema"."schools", + "mainSchema"."semesters", + "mainSchema"."teams", + "mainSchema"."fieldsOfStudy", + "mainSchema"."departments", + "mainSchema"."interviewSchemas" +RESTART IDENTITY CASCADE; + +COMMIT; diff --git a/package.json b/package.json index 3b9dde5..4be14f5 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,10 @@ "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": "powershell -NoProfile -Command \"Get-Content db\\\\seeding\\\\seed.sql | docker compose exec -T db psql -U postgres -d vektorpostgres\"", - "db:seed:unix": "sudo docker compose exec -T db psql -U postgres -d vektorpostgres < db/seeding/seed.sql", + "db:seed": "powershell -NoProfile -Command \"Get-Content db\\\\seeding\\\\seed.sql | docker compose exec -T db psql -U postgres -d vektorPostgres\"", + "db:seed:unix": "sudo docker compose exec -T db psql -U postgres -d vektorPostgres < db/seeding/seed.sql", + "db:unseed": "powershell -NoProfile -Command \"Get-Content db\\\\seeding\\\\removeData.sql | docker compose exec -T db psql -U postgres -d vektorPostgres\"", + "db:unseed:unix": "sudo docker compose exec -T db psql -U postgres -d vektorPostgres < db/seeding/removeData.sql", "docs:generate": "tsx ./openapi/generate-document.ts" }, "license": "ISC",