Skip to content

Commit 21670c0

Browse files
committed
Add announcements
1 parent 3f2cc61 commit 21670c0

File tree

4 files changed

+59
-0
lines changed

4 files changed

+59
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-- CreateTable
2+
CREATE TABLE "Announcement" (
3+
"id" TEXT NOT NULL,
4+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
5+
"updatedAt" TIMESTAMP(3) NOT NULL,
6+
"content" TEXT NOT NULL,
7+
"isSent" BOOLEAN NOT NULL DEFAULT false,
8+
"eventId" TEXT,
9+
"eventGroupId" TEXT,
10+
11+
CONSTRAINT "Announcement_pkey" PRIMARY KEY ("id")
12+
);
13+
14+
-- AddForeignKey
15+
ALTER TABLE "Announcement" ADD CONSTRAINT "Announcement_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE SET NULL ON UPDATE CASCADE;

prisma/schema.prisma

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ model Event {
9090
promoCodes PromoCode[]
9191
interestedEmails MailingListMember[]
9292
webhooks Webhook[]
93+
announcements Announcement[]
9394
}
9495

9596
enum WebhookService {
@@ -300,6 +301,20 @@ model ScheduleItem {
300301
eventGroupId String?
301302
}
302303

304+
model Announcement {
305+
// Metadata
306+
id String @id @default(cuid())
307+
createdAt DateTime @default(now())
308+
updatedAt DateTime @updatedAt
309+
310+
content String
311+
isSent Boolean @default(false)
312+
313+
// Relations
314+
event Event? @relation(fields: [eventId], references: [id])
315+
eventId String?
316+
}
317+
303318
enum DiscountType {
304319
SUBTRACT
305320
PERCENT
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import {AnnouncementScalarFieldEnum, ModelConfig} from "../generated/typegraphql-prisma";
2+
import {Authorized} from "type-graphql";
3+
import {AuthRole} from "../context";
4+
5+
let defaultPerms: {[key: string]: MethodDecorator[]} = {};
6+
Object.keys(AnnouncementScalarFieldEnum).forEach((value: string) => defaultPerms[value] = [Authorized(AuthRole.ADMIN, AuthRole.MANAGER)])
7+
8+
export const announcementEnhanceConfig: ModelConfig<"Announcement"> = {
9+
fields: {
10+
...defaultPerms,
11+
id: [],
12+
createdAt: [],
13+
updatedAt: [],
14+
content: [],
15+
}
16+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import {ResolverActionsConfig, AnnouncementCrudResolver} from "../generated/typegraphql-prisma";
2+
import {Authorized} from "type-graphql";
3+
import {AuthRole} from "../context";
4+
5+
let defaultPerms: {[key: string]: MethodDecorator[]} = {};
6+
Object.getOwnPropertyNames(AnnouncementCrudResolver.prototype).forEach((value: string) => defaultPerms[value] = [Authorized(AuthRole.ADMIN)])
7+
8+
export const announcementEnhanceConfig: ResolverActionsConfig<"Announcement"> = {
9+
...defaultPerms,
10+
createAnnouncement: [Authorized(AuthRole.ADMIN, AuthRole.MANAGER)],
11+
updateAnnouncement: [Authorized(AuthRole.ADMIN)],
12+
deleteAnnouncement: [Authorized(AuthRole.ADMIN)],
13+
}

0 commit comments

Comments
 (0)