@studious-lms/server 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/LICENSE.txt +8 -0
  2. package/README.md +143 -0
  3. package/dist/exportType.d.ts +9 -0
  4. package/dist/exportType.d.ts.map +1 -0
  5. package/dist/exportType.js +7 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +82 -0
  9. package/dist/lib/fileUpload.d.ts +38 -0
  10. package/dist/lib/fileUpload.d.ts.map +1 -0
  11. package/dist/lib/fileUpload.js +136 -0
  12. package/dist/lib/googleCloudStorage.d.ts +20 -0
  13. package/dist/lib/googleCloudStorage.d.ts.map +1 -0
  14. package/dist/lib/googleCloudStorage.js +88 -0
  15. package/dist/lib/prisma.d.ts +8 -0
  16. package/dist/lib/prisma.d.ts.map +1 -0
  17. package/dist/lib/prisma.js +11 -0
  18. package/dist/lib/thumbnailGenerator.d.ts +23 -0
  19. package/dist/lib/thumbnailGenerator.d.ts.map +1 -0
  20. package/dist/lib/thumbnailGenerator.js +180 -0
  21. package/dist/logger.d.ts +26 -0
  22. package/dist/logger.d.ts.map +1 -0
  23. package/dist/logger.js +135 -0
  24. package/dist/middleware/auth.d.ts +7 -0
  25. package/dist/middleware/auth.d.ts.map +1 -0
  26. package/dist/middleware/auth.js +170 -0
  27. package/dist/middleware/logging.d.ts +2 -0
  28. package/dist/middleware/logging.d.ts.map +1 -0
  29. package/dist/middleware/logging.js +51 -0
  30. package/dist/routers/_app.d.ts +4369 -0
  31. package/dist/routers/_app.d.ts.map +1 -0
  32. package/dist/routers/_app.js +29 -0
  33. package/dist/routers/agenda.d.ts +66 -0
  34. package/dist/routers/agenda.d.ts.map +1 -0
  35. package/dist/routers/agenda.js +78 -0
  36. package/dist/routers/announcement.d.ts +79 -0
  37. package/dist/routers/announcement.d.ts.map +1 -0
  38. package/dist/routers/announcement.js +122 -0
  39. package/dist/routers/assignment.d.ts +1051 -0
  40. package/dist/routers/assignment.d.ts.map +1 -0
  41. package/dist/routers/assignment.js +1497 -0
  42. package/dist/routers/attendance.d.ts +99 -0
  43. package/dist/routers/attendance.d.ts.map +1 -0
  44. package/dist/routers/attendance.js +269 -0
  45. package/dist/routers/auth.d.ts +87 -0
  46. package/dist/routers/auth.d.ts.map +1 -0
  47. package/dist/routers/auth.js +255 -0
  48. package/dist/routers/class.d.ts +427 -0
  49. package/dist/routers/class.d.ts.map +1 -0
  50. package/dist/routers/class.js +693 -0
  51. package/dist/routers/event.d.ts +249 -0
  52. package/dist/routers/event.d.ts.map +1 -0
  53. package/dist/routers/event.js +467 -0
  54. package/dist/routers/file.d.ts +27 -0
  55. package/dist/routers/file.d.ts.map +1 -0
  56. package/dist/routers/file.js +88 -0
  57. package/dist/routers/section.d.ts +51 -0
  58. package/dist/routers/section.d.ts.map +1 -0
  59. package/dist/routers/section.js +123 -0
  60. package/dist/routers/user.d.ts +49 -0
  61. package/dist/routers/user.d.ts.map +1 -0
  62. package/dist/routers/user.js +74 -0
  63. package/dist/socket/handlers.d.ts +3 -0
  64. package/dist/socket/handlers.d.ts.map +1 -0
  65. package/dist/socket/handlers.js +130 -0
  66. package/dist/trpc.d.ts +147 -0
  67. package/dist/trpc.d.ts.map +1 -0
  68. package/dist/trpc.js +67 -0
  69. package/dist/types/trpc.d.ts +16 -0
  70. package/dist/types/trpc.d.ts.map +1 -0
  71. package/dist/types/trpc.js +2 -0
  72. package/dist/utils/email.d.ts +3 -0
  73. package/dist/utils/email.d.ts.map +1 -0
  74. package/dist/utils/email.js +16 -0
  75. package/dist/utils/generateInviteCode.d.ts +6 -0
  76. package/dist/utils/generateInviteCode.d.ts.map +1 -0
  77. package/dist/utils/generateInviteCode.js +11 -0
  78. package/dist/utils/logger.d.ts +27 -0
  79. package/dist/utils/logger.d.ts.map +1 -0
  80. package/dist/utils/logger.js +124 -0
  81. package/generated/prisma/client.d.ts +1 -0
  82. package/generated/prisma/client.js +4 -0
  83. package/generated/prisma/default.d.ts +1 -0
  84. package/generated/prisma/default.js +4 -0
  85. package/generated/prisma/edge.d.ts +1 -0
  86. package/generated/prisma/edge.js +389 -0
  87. package/generated/prisma/index-browser.js +375 -0
  88. package/generated/prisma/index.d.ts +34865 -0
  89. package/generated/prisma/index.js +410 -0
  90. package/generated/prisma/libquery_engine-darwin-arm64.dylib.node +0 -0
  91. package/generated/prisma/package.json +140 -0
  92. package/generated/prisma/runtime/edge-esm.js +34 -0
  93. package/generated/prisma/runtime/edge.js +34 -0
  94. package/generated/prisma/runtime/index-browser.d.ts +370 -0
  95. package/generated/prisma/runtime/index-browser.js +16 -0
  96. package/generated/prisma/runtime/library.d.ts +3647 -0
  97. package/generated/prisma/runtime/library.js +146 -0
  98. package/generated/prisma/runtime/react-native.js +83 -0
  99. package/generated/prisma/runtime/wasm.js +35 -0
  100. package/generated/prisma/schema.prisma +304 -0
  101. package/generated/prisma/wasm.d.ts +1 -0
  102. package/generated/prisma/wasm.js +375 -0
  103. package/package.json +46 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_app.d.ts","sourceRoot":"","sources":["../../src/routers/_app.ts"],"names":[],"mappings":"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C,SAAS,CAAC,CAAC;AAG1D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAiC,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCaller = exports.appRouter = void 0;
4
+ const trpc_1 = require("../trpc");
5
+ const class_1 = require("./class");
6
+ const announcement_1 = require("./announcement");
7
+ const assignment_1 = require("./assignment");
8
+ const user_1 = require("./user");
9
+ const trpc_2 = require("@/trpc");
10
+ const section_1 = require("./section");
11
+ const attendance_1 = require("./attendance");
12
+ const event_1 = require("./event");
13
+ const auth_1 = require("./auth");
14
+ const agenda_1 = require("./agenda");
15
+ const file_1 = require("./file");
16
+ exports.appRouter = (0, trpc_1.createTRPCRouter)({
17
+ class: class_1.classRouter,
18
+ announcement: announcement_1.announcementRouter,
19
+ assignment: assignment_1.assignmentRouter,
20
+ user: user_1.userRouter,
21
+ section: section_1.sectionRouter,
22
+ attendance: attendance_1.attendanceRouter,
23
+ event: event_1.eventRouter,
24
+ auth: auth_1.authRouter,
25
+ agenda: agenda_1.agendaRouter,
26
+ file: file_1.fileRouter,
27
+ });
28
+ // Export caller
29
+ exports.createCaller = (0, trpc_2.createCallerFactory)(exports.appRouter);
@@ -0,0 +1,66 @@
1
+ import { z } from "zod";
2
+ export declare const agendaRouter: import("@trpc/server/dist/unstable-core-do-not-import").BuiltRouter<{
3
+ ctx: import("../trpc").Context;
4
+ meta: object;
5
+ errorShape: {
6
+ data: {
7
+ zodError: z.typeToFlattenedError<any, string> | null;
8
+ code: import("@trpc/server/dist/unstable-core-do-not-import").TRPC_ERROR_CODE_KEY;
9
+ httpStatus: number;
10
+ path?: string;
11
+ stack?: string;
12
+ };
13
+ message: string;
14
+ code: import("@trpc/server/dist/unstable-core-do-not-import").TRPC_ERROR_CODE_NUMBER;
15
+ };
16
+ transformer: false;
17
+ }, import("@trpc/server/dist/unstable-core-do-not-import").DecorateCreateRouterOptions<{
18
+ get: import("@trpc/server").TRPCQueryProcedure<{
19
+ input: {
20
+ weekStart: string;
21
+ };
22
+ output: {
23
+ events: {
24
+ personal: ({
25
+ class: {
26
+ id: string;
27
+ name: string;
28
+ subject: string;
29
+ color: string | null;
30
+ section: string;
31
+ } | null;
32
+ } & {
33
+ id: string;
34
+ name: string | null;
35
+ color: string | null;
36
+ classId: string | null;
37
+ userId: string | null;
38
+ remarks: string | null;
39
+ startTime: Date;
40
+ endTime: Date;
41
+ location: string | null;
42
+ })[];
43
+ class: ({
44
+ class: {
45
+ id: string;
46
+ name: string;
47
+ subject: string;
48
+ color: string | null;
49
+ section: string;
50
+ } | null;
51
+ } & {
52
+ id: string;
53
+ name: string | null;
54
+ color: string | null;
55
+ classId: string | null;
56
+ userId: string | null;
57
+ remarks: string | null;
58
+ startTime: Date;
59
+ endTime: Date;
60
+ location: string | null;
61
+ })[];
62
+ };
63
+ };
64
+ }>;
65
+ }>>;
66
+ //# sourceMappingURL=agenda.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agenda.d.ts","sourceRoot":"","sources":["../../src/routers/agenda.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEvB,CAAC"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.agendaRouter = void 0;
4
+ const zod_1 = require("zod");
5
+ const trpc_1 = require("../trpc");
6
+ const prisma_1 = require("@lib/prisma");
7
+ const server_1 = require("@trpc/server");
8
+ const date_fns_1 = require("date-fns");
9
+ exports.agendaRouter = (0, trpc_1.createTRPCRouter)({
10
+ get: trpc_1.protectedProcedure
11
+ .input(zod_1.z.object({
12
+ weekStart: zod_1.z.string(),
13
+ }))
14
+ .query(async ({ ctx, input }) => {
15
+ if (!ctx.user) {
16
+ throw new server_1.TRPCError({
17
+ code: "UNAUTHORIZED",
18
+ message: "You must be logged in to get your agenda",
19
+ });
20
+ }
21
+ const weekStart = (0, date_fns_1.startOfDay)(new Date(input.weekStart));
22
+ const weekEnd = (0, date_fns_1.endOfDay)((0, date_fns_1.addDays)(weekStart, 6));
23
+ const [personalEvents, classEvents] = await Promise.all([
24
+ // Get personal events
25
+ prisma_1.prisma.event.findMany({
26
+ where: {
27
+ userId: ctx.user.id,
28
+ startTime: {
29
+ gte: weekStart,
30
+ lte: weekEnd,
31
+ },
32
+ class: {
33
+ is: null,
34
+ },
35
+ },
36
+ include: {
37
+ class: true,
38
+ },
39
+ }),
40
+ // Get class events
41
+ prisma_1.prisma.event.findMany({
42
+ where: {
43
+ class: {
44
+ OR: [
45
+ {
46
+ teachers: {
47
+ some: {
48
+ id: ctx.user.id,
49
+ },
50
+ },
51
+ },
52
+ {
53
+ students: {
54
+ some: {
55
+ id: ctx.user.id,
56
+ },
57
+ },
58
+ },
59
+ ],
60
+ },
61
+ startTime: {
62
+ gte: weekStart,
63
+ lte: weekEnd,
64
+ },
65
+ },
66
+ include: {
67
+ class: true,
68
+ },
69
+ }),
70
+ ]);
71
+ return {
72
+ events: {
73
+ personal: personalEvents,
74
+ class: classEvents,
75
+ },
76
+ };
77
+ }),
78
+ });
@@ -0,0 +1,79 @@
1
+ import { z } from "zod";
2
+ export declare const announcementRouter: import("@trpc/server/dist/unstable-core-do-not-import").BuiltRouter<{
3
+ ctx: import("../trpc").Context;
4
+ meta: object;
5
+ errorShape: {
6
+ data: {
7
+ zodError: z.typeToFlattenedError<any, string> | null;
8
+ code: import("@trpc/server/dist/unstable-core-do-not-import").TRPC_ERROR_CODE_KEY;
9
+ httpStatus: number;
10
+ path?: string;
11
+ stack?: string;
12
+ };
13
+ message: string;
14
+ code: import("@trpc/server/dist/unstable-core-do-not-import").TRPC_ERROR_CODE_NUMBER;
15
+ };
16
+ transformer: false;
17
+ }, import("@trpc/server/dist/unstable-core-do-not-import").DecorateCreateRouterOptions<{
18
+ getAll: import("@trpc/server").TRPCQueryProcedure<{
19
+ input: {
20
+ [x: string]: unknown;
21
+ classId: string;
22
+ };
23
+ output: {
24
+ announcements: {
25
+ id: string;
26
+ teacher: {
27
+ id: string;
28
+ username: string;
29
+ };
30
+ createdAt: Date;
31
+ remarks: string;
32
+ }[];
33
+ };
34
+ }>;
35
+ create: import("@trpc/server").TRPCMutationProcedure<{
36
+ input: {
37
+ [x: string]: unknown;
38
+ classId: string;
39
+ remarks: string;
40
+ };
41
+ output: {
42
+ announcement: {
43
+ id: string;
44
+ teacher: {
45
+ id: string;
46
+ username: string;
47
+ };
48
+ createdAt: Date;
49
+ remarks: string;
50
+ };
51
+ };
52
+ }>;
53
+ update: import("@trpc/server").TRPCMutationProcedure<{
54
+ input: {
55
+ id: string;
56
+ data: {
57
+ content: string;
58
+ };
59
+ };
60
+ output: {
61
+ announcement: {
62
+ id: string;
63
+ classId: string;
64
+ createdAt: Date;
65
+ teacherId: string;
66
+ remarks: string;
67
+ };
68
+ };
69
+ }>;
70
+ delete: import("@trpc/server").TRPCMutationProcedure<{
71
+ input: {
72
+ id: string;
73
+ };
74
+ output: {
75
+ success: boolean;
76
+ };
77
+ }>;
78
+ }>>;
79
+ //# sourceMappingURL=announcement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"announcement.d.ts","sourceRoot":"","sources":["../../src/routers/announcement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoH7B,CAAC"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.announcementRouter = void 0;
4
+ const zod_1 = require("zod");
5
+ const trpc_1 = require("../trpc");
6
+ const prisma_1 = require("@lib/prisma");
7
+ const server_1 = require("@trpc/server");
8
+ const AnnouncementSelect = {
9
+ id: true,
10
+ teacher: {
11
+ select: {
12
+ id: true,
13
+ username: true,
14
+ },
15
+ },
16
+ remarks: true,
17
+ createdAt: true,
18
+ };
19
+ exports.announcementRouter = (0, trpc_1.createTRPCRouter)({
20
+ getAll: trpc_1.protectedClassMemberProcedure
21
+ .input(zod_1.z.object({
22
+ classId: zod_1.z.string(),
23
+ }))
24
+ .query(async ({ ctx, input }) => {
25
+ const announcements = await prisma_1.prisma.announcement.findMany({
26
+ where: {
27
+ classId: input.classId,
28
+ },
29
+ select: AnnouncementSelect,
30
+ orderBy: {
31
+ createdAt: 'desc',
32
+ },
33
+ });
34
+ return {
35
+ announcements,
36
+ };
37
+ }),
38
+ create: trpc_1.protectedTeacherProcedure
39
+ .input(zod_1.z.object({
40
+ classId: zod_1.z.string(),
41
+ remarks: zod_1.z.string(),
42
+ }))
43
+ .mutation(async ({ ctx, input }) => {
44
+ const announcement = await prisma_1.prisma.announcement.create({
45
+ data: {
46
+ remarks: input.remarks,
47
+ teacher: {
48
+ connect: {
49
+ id: ctx.user?.id,
50
+ },
51
+ },
52
+ class: {
53
+ connect: {
54
+ id: input.classId,
55
+ },
56
+ },
57
+ },
58
+ select: AnnouncementSelect,
59
+ });
60
+ return {
61
+ announcement,
62
+ };
63
+ }),
64
+ update: trpc_1.protectedProcedure
65
+ .input(zod_1.z.object({
66
+ id: zod_1.z.string(),
67
+ data: zod_1.z.object({
68
+ content: zod_1.z.string(),
69
+ }),
70
+ }))
71
+ .mutation(async ({ ctx, input }) => {
72
+ const announcement = await prisma_1.prisma.announcement.findUnique({
73
+ where: { id: input.id },
74
+ include: {
75
+ class: {
76
+ include: {
77
+ teachers: true,
78
+ },
79
+ },
80
+ },
81
+ });
82
+ if (!announcement) {
83
+ throw new server_1.TRPCError({
84
+ code: "NOT_FOUND",
85
+ message: "Announcement not found",
86
+ });
87
+ }
88
+ const updatedAnnouncement = await prisma_1.prisma.announcement.update({
89
+ where: { id: input.id },
90
+ data: {
91
+ remarks: input.data.content,
92
+ },
93
+ });
94
+ return { announcement: updatedAnnouncement };
95
+ }),
96
+ delete: trpc_1.protectedProcedure
97
+ .input(zod_1.z.object({
98
+ id: zod_1.z.string(),
99
+ }))
100
+ .mutation(async ({ ctx, input }) => {
101
+ const announcement = await prisma_1.prisma.announcement.findUnique({
102
+ where: { id: input.id },
103
+ include: {
104
+ class: {
105
+ include: {
106
+ teachers: true,
107
+ },
108
+ },
109
+ },
110
+ });
111
+ if (!announcement) {
112
+ throw new server_1.TRPCError({
113
+ code: "NOT_FOUND",
114
+ message: "Announcement not found",
115
+ });
116
+ }
117
+ await prisma_1.prisma.announcement.delete({
118
+ where: { id: input.id },
119
+ });
120
+ return { success: true };
121
+ }),
122
+ });