From f41df312aba57d857c0aa7c92e44b4244f32f9b0 Mon Sep 17 00:00:00 2001 From: Theodor Kvalsvik Lauritzen <19690242+theodorklauritzen@users.noreply.github.com> Date: Mon, 9 Feb 2026 19:55:28 +0100 Subject: [PATCH 1/2] feat(seeder): Seed interest groups --- .../CreateInterestGroupForm.tsx | 1 - src/prisma/schema/group.prisma | 2 - .../interest_groups/general_info.md | 5 +- .../seeder/src/development/seedDevGroups.ts | 20 --- src/prisma/seeder/src/seedInterestGroups.ts | 115 ++++++++++++++++++ src/prisma/seeder/src/seeder.ts | 2 + .../groups/interestGroups/operations.ts | 4 +- src/services/groups/interestGroups/schemas.ts | 6 - 8 files changed, 121 insertions(+), 34 deletions(-) create mode 100644 src/prisma/seeder/src/seedInterestGroups.ts diff --git a/src/app/interest-groups/CreateInterestGroupForm.tsx b/src/app/interest-groups/CreateInterestGroupForm.tsx index 4b936d2fb..e21c34384 100644 --- a/src/app/interest-groups/CreateInterestGroupForm.tsx +++ b/src/app/interest-groups/CreateInterestGroupForm.tsx @@ -13,7 +13,6 @@ export default function CreateInterestGroupForm() { submitText="Lag interessegruppe" > - ) diff --git a/src/prisma/schema/group.prisma b/src/prisma/schema/group.prisma index e9008d7ac..29448a6c8 100644 --- a/src/prisma/schema/group.prisma +++ b/src/prisma/schema/group.prisma @@ -89,11 +89,9 @@ model InterestGroup { id Int @id @default(autoincrement()) name String - shortName String @unique articleSection ArticleSection @relation(fields: [articleSectionId], references: [id], onDelete: Restrict, onUpdate: Cascade) articleSectionId Int @unique - // TODO - add intereset group data } model ManualGroup { diff --git a/src/prisma/seeder/cms_paragraphs/interest_groups/general_info.md b/src/prisma/seeder/cms_paragraphs/interest_groups/general_info.md index b6c4f4590..f6279e337 100644 --- a/src/prisma/seeder/cms_paragraphs/interest_groups/general_info.md +++ b/src/prisma/seeder/cms_paragraphs/interest_groups/general_info.md @@ -6,6 +6,7 @@ Har du en interesse du har lyst til å dele med andre? Interessegrupper er noe v **Ønsker du å opprette en gruppe?** Send en mail til hs@omega.ntnu.no, så tar vi kontakt. -Få støtte! Ønsker din gruppe å søke støtte, send en søknad til scatmeister@omega.ntnu.no. For å få penger må gruppen bestå av flere aktive medlemmer i Omega, samt ha klart et budsjett over hva de planlegger å bruke pengene på. Søknaden vil så bli vurdert av fondsstyret. Det er altså ikke en garanti å få penger, men hvis formålet er noe Broedre iitem systre kan nyte godt av lover det godt for søknaden. +**Få støtte!** Ønsker din gruppe å søke støtte, send en søknad til scatmeister@omega.ntnu.no. For å få penger må gruppen bestå av flere aktive medlemmer i Omega, samt ha klart et budsjett over hva de planlegger å bruke pengene på. Søknaden vil så bli vurdert av fondsstyret. Det er altså ikke en garanti å få penger, men hvis formålet er noe Broedre iitem systre kan nyte godt av lover det godt for søknaden. -Høres dette vrient ut, så fortvil ikke: Vi er her for å hjelpe dere. \ No newline at end of file +**Har du noen spørsmål rundt noen av interessegruppene?** +Ta kontakt med HS diff --git a/src/prisma/seeder/src/development/seedDevGroups.ts b/src/prisma/seeder/src/development/seedDevGroups.ts index d23ed8904..9e833343f 100644 --- a/src/prisma/seeder/src/development/seedDevGroups.ts +++ b/src/prisma/seeder/src/development/seedDevGroups.ts @@ -91,24 +91,4 @@ export default async function seedDevGroups(prisma: PrismaClient) { }, } }))) - - await Promise.all([1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(i => prisma.interestGroup.create({ - data: { - name: `Interessegruppe ${i}`, - shortName: `IG${i}`, - articleSection: { - create: { - cmsImage: { create: {} }, - cmsParagraph: { create: {} }, - cmsLink: { create: {} }, - } - }, - group: { - create: { - groupType: 'INTEREST_GROUP', - order: order.order, - }, - }, - } - }))) } diff --git a/src/prisma/seeder/src/seedInterestGroups.ts b/src/prisma/seeder/src/seedInterestGroups.ts new file mode 100644 index 000000000..62a9b7616 --- /dev/null +++ b/src/prisma/seeder/src/seedInterestGroups.ts @@ -0,0 +1,115 @@ +import type { PrismaClient } from '@/prisma-generated-pn-client' + +const interestGroups: { + name: string, + url: string +}[] = [ + { + name: 'Omega Integarn', + url: 'https://www.facebook.com/groups/omegaintegarn/', + }, + { + name: 'Omega Lavpassfil(m)ter', + url: 'https://www.facebook.com/groups/1191337511256303/', + }, + { + name: 'Omega Smashbros', + url: 'https://www.facebook.com/groups/539139876817932/', + }, + { + name: 'Omega Topptur', + url: 'https://www.facebook.com/groups/441437179897894/', + }, + { + name: 'Omega SeFotball', + url: 'https://www.facebook.com/groups/1893717857436467/', + }, + { + name: 'Omega Badeclubb', + url: 'https://www.facebook.com/groups/196138748516983', + }, + { + name: 'Steingjengen', + url: 'https://www.facebook.com/groups/3095703260715088', + }, + { + name: 'Omega Formelsamling', + url: 'https://www.facebook.com/groups/523370429095199/', + }, + { + name: 'Omega Yatzy', + url: 'https://www.facebook.com/groups/717061329329972/', + }, + { + name: 'Spillkretsen', + url: 'https://www.facebook.com/groups/313197997852553/', + }, + { + name: 'Omega Puslespill', + url: 'https://www.facebook.com/groups/589493906548263/', + }, + { + name: 'Omega Systre', + url: 'https://www.facebook.com/groups/1235153214107409/', + }, + { + name: 'Omega Håndball', + url: 'https://www.facebook.com/groups/7473447119423028/', + }, + { + name: 'Omega Kondisatorane', + url: 'https://www.facebook.com/groups/689162269810343/', + }, + { + name: 'St. Quiz Omega', + url: 'https://www.facebook.com/groups/3859557797704270/', + }, + { + name: 'Omega TUR', + url: 'https://www.facebook.com/groups/931010798841182/', + }, + { + name: 'Trondheim Tabataforening', + url: 'https://www.facebook.com/groups/624129628827521/', + }, + { + name: 'Omega Kite', + url: 'https://www.facebook.com/groups/1411618774258694/', + }, + { + name: 'Omega Basket', + url: 'https://www.facebook.com/groups/1328303331832130/', + }, +] + +export default async function seedInterestGroups(prisma: PrismaClient) { + const order = await prisma.omegaOrder.findFirstOrThrow({ + orderBy: { + order: 'desc' + }, + }) + + await Promise.all(interestGroups.map(group => prisma.interestGroup.create({ + data: { + name: group.name, + articleSection: { + create: { + cmsImage: { create: {} }, + cmsParagraph: { create: {} }, + cmsLink: { + create: { + url: group.url, + text: 'Facebookgruppe' + } + }, + } + }, + group: { + create: { + groupType: 'INTEREST_GROUP', + order: order.order, + }, + }, + } + }))) +} diff --git a/src/prisma/seeder/src/seeder.ts b/src/prisma/seeder/src/seeder.ts index 3b78513f7..248b13bac 100644 --- a/src/prisma/seeder/src/seeder.ts +++ b/src/prisma/seeder/src/seeder.ts @@ -27,6 +27,7 @@ import seedPermissions from './seedPermissions' import seedFlairs from './seedFlairs' import { PrismaClient } from '@/prisma-generated-pn-client' import { PrismaPg } from '@prisma/adapter-pg' +import seedInterestGroups from './seedInterestGroups' export default async function seed( shouldMigrate: boolean, @@ -56,6 +57,7 @@ export default async function seed( await seedEvents(prisma) await seedPermissions(prisma) await seedFlairs(prisma) + await seedInterestGroups(prisma) if (enableLogging) console.log('seed standard done') if (enableLogging) console.log(shouldMigrate ? 'migrating from veven' : 'not migrating from veven') diff --git a/src/services/groups/interestGroups/operations.ts b/src/services/groups/interestGroups/operations.ts index a1e9c8485..43f583790 100644 --- a/src/services/groups/interestGroups/operations.ts +++ b/src/services/groups/interestGroups/operations.ts @@ -54,13 +54,11 @@ export const interestGroupOperations = { read: defineOperation({ paramsSchema: z.object({ id: z.number().optional(), - shortName: z.string().optional(), }), authorizer: () => interestGroupAuth.read.dynamicFields({}), - operation: async ({ prisma, params: { id, shortName } }) => await prisma.interestGroup.findUniqueOrThrow({ + operation: async ({ prisma, params: { id } }) => await prisma.interestGroup.findUniqueOrThrow({ where: { id, - shortName, }, include: { articleSection: { diff --git a/src/services/groups/interestGroups/schemas.ts b/src/services/groups/interestGroups/schemas.ts index c0ffcd08a..8eb1dbfb7 100644 --- a/src/services/groups/interestGroups/schemas.ts +++ b/src/services/groups/interestGroups/schemas.ts @@ -5,20 +5,14 @@ const baseSchema = z.object({ .min(3, 'Navn må ha minst 3 tegn') .max(30, 'Navn kan ha maks 30 tegn') .trim(), - shortName: z.string() - .min(3, 'Kortnavn må ha minst 3 tegn') - .max(10, 'Kortnavn kan ha maks 10 tegn') - .trim(), }) export const interestGroupSchemas = { create: baseSchema.pick({ name: true, - shortName: true, }), update: baseSchema.partial().pick({ name: true, - shortName: true, }), } From d60d4be418374e228f2413bac84f5fac955615b3 Mon Sep 17 00:00:00 2001 From: Theodor Kvalsvik Lauritzen <19690242+theodorklauritzen@users.noreply.github.com> Date: Wed, 11 Feb 2026 23:39:28 +0100 Subject: [PATCH 2/2] chore: Trigger CI workflows