Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
16de5a9
feat:lagt til meetings table
simenen123 Sep 10, 2025
08bf204
fixed:fjerna unused imports
simenen123 Sep 10, 2025
0a21d71
prøver igjen
simenen123 Sep 10, 2025
25d60bc
bruh
simenen123 Sep 10, 2025
980dddb
fix: endret på de nødvendige delene
simenen123 Oct 8, 2025
0762530
Fix: finpussinger på relations
simenen123 Oct 8, 2025
4f696eb
fix: name conventions
simenen123 Oct 27, 2025
f688ead
Fix: gjort ting i alfabetisk rekkefølge
simenen123 Oct 27, 2025
0ae1d3a
fix: fikset inlines(biome kan suge kuken min)
simenen123 Oct 27, 2025
54b69e1
fix: biome
simenen123 Oct 27, 2025
3764609
fix: biome
simenen123 Oct 27, 2025
a880495
Merge remote-tracking branch 'origin/main' into feature/semesters-mee…
simenen123 Oct 27, 2025
8c6f78c
fix: fjernet stor T
simenen123 Oct 27, 2025
6a000c8
fix:seeding now works. Also updated commands
simenen123 Jan 29, 2026
87e9089
fix: shouldve been a small P in "vektorpostgres", with the seeding co…
simenen123 Feb 5, 2026
23ad411
fix: updated the readme
simenen123 Feb 5, 2026
7276d6f
fix: .env.example was different than the readme documentation leading…
simenen123 Feb 16, 2026
169cbbf
Merge branch 'main' into feature/semesters-meetings-relations
simenen123 Feb 16, 2026
a129bc9
Revert "fix: .env.example was different than the readme documentation…
simenen123 Feb 16, 2026
eff0f1d
fix: .env example now has correct config
simenen123 Feb 16, 2026
f477f5b
fix: the .env example is updated to correct values. Also fixed and ad…
simenen123 Feb 23, 2026
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
18 changes: 15 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -115,7 +116,7 @@ For å kjøre appen og migrere databasen, se [scripts](#database).

### Imports Autocomplete

[`christian-kohler.npm-intellisense`](<https://marketplace.visualstudio.com/items?itemName=christian-kohler.npm-intellisense>)
[`christian-kohler.npm-intellisense`](https://marketplace.visualstudio.com/items?itemName=christian-kohler.npm-intellisense)

### Formatting and Linting

Expand Down Expand Up @@ -226,12 +227,23 @@ 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
pnpm db seed:unix
```

```sh
pnpm db seed:unix
```

## Info

Tabellnavn er i *flertall* (users > user)
Tabellnavn er i _flertall_ (users > user)
250 changes: 250 additions & 0 deletions db/seeding/dbDiagramCode.txt
Original file line number Diff line number Diff line change
@@ -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
25 changes: 25 additions & 0 deletions db/seeding/removeData.sql
Original file line number Diff line number Diff line change
@@ -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;
Loading