@gbl-uzh/platform 0.4.33 → 0.4.37

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 (37) hide show
  1. package/dist/nexus.d.ts +1 -0
  2. package/dist/nexus.d.ts.map +1 -1
  3. package/dist/nexus.js +3 -2
  4. package/dist/nexus.js.map +1 -1
  5. package/dist/ops/FPlayerData.graphql +4 -0
  6. package/dist/ops/QQuestAchievements.graphql +13 -0
  7. package/dist/ops/QResult.graphql +12 -0
  8. package/dist/schema.prisma +16 -4
  9. package/dist/services/AccountService.d.ts +5 -0
  10. package/dist/services/AccountService.d.ts.map +1 -1
  11. package/dist/services/AccountService.js +17 -4
  12. package/dist/services/AccountService.js.map +1 -1
  13. package/dist/services/EventService.d.ts.map +1 -1
  14. package/dist/services/EventService.js +89 -33
  15. package/dist/services/EventService.js.map +1 -1
  16. package/dist/services/GameService.d.ts +6 -0
  17. package/dist/services/GameService.d.ts.map +1 -1
  18. package/dist/services/GameService.js +22 -18
  19. package/dist/services/GameService.js.map +1 -1
  20. package/dist/services/PlayService.d.ts +5 -0
  21. package/dist/services/PlayService.d.ts.map +1 -1
  22. package/dist/services/PlayService.js +14 -1
  23. package/dist/services/PlayService.js.map +1 -1
  24. package/dist/tsconfig.tsbuildinfo +1 -1
  25. package/dist/types/Achievement.d.ts +1 -0
  26. package/dist/types/Achievement.d.ts.map +1 -1
  27. package/dist/types/Achievement.js +16 -1
  28. package/dist/types/Achievement.js.map +1 -1
  29. package/dist/types/Mutation.d.ts.map +1 -1
  30. package/dist/types/Mutation.js +49 -1
  31. package/dist/types/Mutation.js.map +1 -1
  32. package/dist/types/Query.d.ts.map +1 -1
  33. package/dist/types/Query.js +11 -0
  34. package/dist/types/Query.js.map +1 -1
  35. package/dist/types.d.ts +5 -5
  36. package/dist/types.d.ts.map +1 -1
  37. package/package.json +5 -1
package/dist/nexus.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export declare const JsonScalar: import("nexus/dist/core.js").AllNexusOutputTypeDefs;
2
+ export declare const JsonValueScalar: import("nexus/dist/core.js").AllNexusOutputTypeDefs;
2
3
  export declare const DateScalar: import("nexus/dist/core.js").AllNexusOutputTypeDefs;
3
4
  export declare const UserRole: import("nexus/dist/core.js").NexusEnumTypeDef<"UserRole">;
4
5
  export declare const Event: import("nexus/dist/core.js").NexusObjectTypeDef<"Event">;
@@ -1 +1 @@
1
- {"version":3,"file":"nexus.d.ts","sourceRoot":"","sources":["../src/nexus.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,qDAA4C,CAAA;AACnE,eAAO,MAAM,UAAU,qDAA0C,CAAA;AAEjE,eAAO,MAAM,QAAQ,2DAGnB,CAAA;AAEF,eAAO,MAAM,KAAK,0DAOhB,CAAA;AAEF,cAAc,iBAAiB,CAAA;AAC/B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA"}
1
+ {"version":3,"file":"nexus.d.ts","sourceRoot":"","sources":["../src/nexus.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,qDAA4C,CAAA;AACnE,eAAO,MAAM,eAAe,qDAA2C,CAAA;AACvE,eAAO,MAAM,UAAU,qDAA0C,CAAA;AAEjE,eAAO,MAAM,QAAQ,2DAGnB,CAAA;AAEF,eAAO,MAAM,KAAK,0DAOhB,CAAA;AAEF,cAAc,iBAAiB,CAAA;AAC/B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA"}
package/dist/nexus.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as DB from '@prisma/client';
2
- import { JSONObjectResolver, DateTimeResolver } from 'graphql-scalars';
2
+ import { JSONObjectResolver, JSONResolver, DateTimeResolver } from 'graphql-scalars';
3
3
  import { asNexusMethod, enumType, objectType } from 'nexus';
4
4
  export { Game, GameStatus, Period, PeriodSegment } from './types/Game.js';
5
5
  export { LearningAnswerOption, LearningElement, LearningElementAttempt, LearningElementState } from './types/LearningElement.js';
@@ -9,6 +9,7 @@ export { Query, generateBaseQueries } from './types/Query.js';
9
9
  export { Subscription, generateBaseSubscriptions } from './types/Subscription.js';
10
10
 
11
11
  const JsonScalar = asNexusMethod(JSONObjectResolver, 'json');
12
+ const JsonValueScalar = asNexusMethod(JSONResolver, 'jsonValue');
12
13
  const DateScalar = asNexusMethod(DateTimeResolver, 'date');
13
14
  const UserRole = enumType({
14
15
  name: 'UserRole',
@@ -23,5 +24,5 @@ const Event = objectType({
23
24
  },
24
25
  });
25
26
 
26
- export { DateScalar, Event, JsonScalar, UserRole };
27
+ export { DateScalar, Event, JsonScalar, JsonValueScalar, UserRole };
27
28
  //# sourceMappingURL=nexus.js.map
package/dist/nexus.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"nexus.js","sources":["../src/nexus.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAIa,MAAA,UAAU,GAAG,aAAa,CAAC,kBAAkB,EAAE,MAAM;AACrD,MAAA,UAAU,GAAG,aAAa,CAAC,gBAAgB,EAAE,MAAM;AAEzD,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAC/B,IAAA,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;AACpC,CAAA;AAEM,MAAM,KAAK,GAAG,UAAU,CAAC;AAC9B,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,UAAU,CAAC,CAAC,EAAA;AACV,QAAA,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAChB,QAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACf,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;KACzC;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"nexus.js","sources":["../src/nexus.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAIa,MAAA,UAAU,GAAG,aAAa,CAAC,kBAAkB,EAAE,MAAM;AACrD,MAAA,eAAe,GAAG,aAAa,CAAC,YAAY,EAAE,WAAW;AACzD,MAAA,UAAU,GAAG,aAAa,CAAC,gBAAgB,EAAE,MAAM;AAEzD,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAC/B,IAAA,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;AACpC,CAAA;AAEM,MAAM,KAAK,GAAG,UAAU,CAAC;AAC9B,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,UAAU,CAAC,CAAC,EAAA;AACV,QAAA,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAChB,QAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACf,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;KACzC;AACF,CAAA;;;;"}
@@ -27,12 +27,16 @@ fragment PlayerData on Player {
27
27
  achievements {
28
28
  id
29
29
  count
30
+ periodIx
30
31
 
31
32
  achievement {
32
33
  id
33
34
  name
34
35
  description
35
36
  image
37
+ when
38
+ scope
39
+ activePeriods
36
40
  reward
37
41
  }
38
42
  }
@@ -0,0 +1,13 @@
1
+ query QuestAchievements {
2
+ questAchievements {
3
+ id
4
+ name
5
+ description
6
+ descriptionsByRole
7
+ image
8
+ when
9
+ scope
10
+ activePeriods
11
+ reward
12
+ }
13
+ }
@@ -55,4 +55,16 @@ query Result {
55
55
  type
56
56
  facts
57
57
  }
58
+
59
+ questAchievements {
60
+ id
61
+ name
62
+ description
63
+ descriptionsByRole
64
+ image
65
+ when
66
+ scope
67
+ activePeriods
68
+ reward
69
+ }
58
70
  }
@@ -335,18 +335,28 @@ enum AchievementFrequency {
335
335
  EACH
336
336
  }
337
337
 
338
+ enum AchievementScope {
339
+ GAME
340
+ PERIOD
341
+ }
342
+
338
343
  model Achievement {
339
344
  id String @id
340
345
 
341
- name String
342
- description String
343
- image String?
346
+ name String
347
+ description String
348
+ descriptionsByRole Json?
349
+ image String?
344
350
 
345
351
  onEventId String
346
352
  onEvent Event @relation(fields: [onEventId], references: [id])
347
353
  when AchievementFrequency
348
354
 
349
- reward Json?
355
+ scope AchievementScope @default(GAME)
356
+ activePeriods Int[]
357
+
358
+ reward Json?
359
+ conditions Json?
350
360
 
351
361
  instances AchievementInstance[]
352
362
 
@@ -367,6 +377,7 @@ model AchievementInstance {
367
377
 
368
378
  periodId Int
369
379
  period Period @relation(fields: [periodId], references: [id])
380
+ periodIx Int
370
381
 
371
382
  gameId Int
372
383
  game Game @relation(fields: [gameId], references: [id])
@@ -374,6 +385,7 @@ model AchievementInstance {
374
385
  createdAt DateTime @default(now())
375
386
  updatedAt DateTime @updatedAt
376
387
 
388
+ @@unique([achievementId, playerId, periodIx])
377
389
  @@index([playerId, achievementId])
378
390
  }
379
391
 
@@ -52,7 +52,11 @@ export declare function loginAsTeam({ token }: LoginAsTeamArgs, ctx: CtxWithPris
52
52
  description: string;
53
53
  image: string | null;
54
54
  reward: import("@prisma/client/runtime/library").JsonValue | null;
55
+ descriptionsByRole: import("@prisma/client/runtime/library").JsonValue | null;
55
56
  when: import("@prisma/client").$Enums.AchievementFrequency;
57
+ scope: import("@prisma/client").$Enums.AchievementScope;
58
+ activePeriods: number[];
59
+ conditions: import("@prisma/client/runtime/library").JsonValue | null;
56
60
  onEventId: string;
57
61
  };
58
62
  } & {
@@ -64,6 +68,7 @@ export declare function loginAsTeam({ token }: LoginAsTeamArgs, ctx: CtxWithPris
64
68
  achievementId: string;
65
69
  playerId: string;
66
70
  periodId: number;
71
+ periodIx: number;
67
72
  })[];
68
73
  } & {
69
74
  number: number;
@@ -1 +1 @@
1
- {"version":3,"file":"AccountService.d.ts","sourceRoot":"","sources":["../../src/services/AccountService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGlD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAErD,UAAU,oBAAoB;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,oBAAoB,UAQtB;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAsB,WAAW,CAC/B,EAAE,KAAK,EAAE,EAAE,eAAe,EAC1B,GAAG,EAAE,aAAa,CAAC,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA6CjC;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,YAAY,CAAC,oBAkBlE"}
1
+ {"version":3,"file":"AccountService.d.ts","sourceRoot":"","sources":["../../src/services/AccountService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGlD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAErD,UAAU,oBAAoB;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,oBAAoB,UAQtB;AAWD,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAsB,WAAW,CAC/B,EAAE,KAAK,EAAE,EAAE,eAAe,EAC1B,GAAG,EAAE,aAAa,CAAC,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAiDjC;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,YAAY,CAAC,oBAiBlE"}
@@ -10,6 +10,15 @@ function createLoginToken({ sub, role, ...extra }) {
10
10
  expiresIn: '1 week',
11
11
  });
12
12
  }
13
+ function isSecureRequest(ctx) {
14
+ const forwardedProto = ctx.req?.headers?.['x-forwarded-proto'];
15
+ if (Array.isArray(forwardedProto))
16
+ return forwardedProto[0] === 'https';
17
+ if (typeof forwardedProto === 'string')
18
+ return forwardedProto === 'https';
19
+ const nextAuthUrl = process.env.NEXTAUTH_URL;
20
+ return typeof nextAuthUrl === 'string' && nextAuthUrl.startsWith('https://');
21
+ }
13
22
  async function loginAsTeam({ token }, ctx) {
14
23
  const matchingPlayer = await ctx.prisma.player.findUnique({
15
24
  where: { token },
@@ -37,12 +46,16 @@ async function loginAsTeam({ token }, ctx) {
37
46
  role: UserRole.PLAYER,
38
47
  token: matchingPlayer.token,
39
48
  });
40
- const cookieName = '__Secure-next-auth.session-token';
49
+ const secure = isSecureRequest(ctx);
50
+ const cookieName = secure
51
+ ? '__Secure-next-auth.session-token'
52
+ : 'next-auth.session-token';
41
53
  setCookie(ctx, cookieName, jwt, {
42
54
  path: '/',
43
55
  maxAge: 60 * 60 * 24 * 7,
44
56
  httpOnly: true,
45
- secure: true,
57
+ secure,
58
+ sameSite: 'lax',
46
59
  });
47
60
  }
48
61
  catch (err) {
@@ -60,8 +73,8 @@ async function logoutAsTeam(ctx) {
60
73
  },
61
74
  });
62
75
  if (matchingPlayer) {
63
- const cookieName = '__Secure-next-auth.session-token';
64
- destroyCookie(ctx, cookieName);
76
+ destroyCookie(ctx, '__Secure-next-auth.session-token', { path: '/' });
77
+ destroyCookie(ctx, 'next-auth.session-token', { path: '/' });
65
78
  return true;
66
79
  }
67
80
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"AccountService.js","sources":["../../src/services/AccountService.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAYM,SAAU,gBAAgB,CAAC,EAC/B,GAAG,EACH,IAAI,EACJ,GAAG,KAAK,EACa,EAAA;AACrB,IAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE;AAChC,QAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;;AAG/C,IAAA,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE;AACpE,QAAA,SAAS,EAAE,QAAQ;AACpB,KAAA,CAAC;AACJ;AAMO,eAAe,WAAW,CAC/B,EAAE,KAAK,EAAmB,EAC1B,GAAgC,EAAA;IAEhC,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;QACxD,KAAK,EAAE,EAAE,KAAK,EAAE;AAChB,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE;AACJ,gBAAA,OAAO,EAAE;AACP,oBAAA,YAAY,EAAE,IAAI;AACnB,iBAAA;AACF,aAAA;AACD,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,YAAY,EAAE;AACZ,gBAAA,OAAO,EAAE;AACP,oBAAA,WAAW,EAAE,IAAI;AAClB,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAC;IAEF,IAAI,CAAC,cAAc,EAAE;AACnB,QAAA,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC;;AAGlC,IAAA,IAAI;QACF,MAAM,GAAG,GAAG,gBAAgB,CAAC;YAC3B,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,GAAG,EAAE,cAAc,CAAC,EAAE;YACtB,IAAI,EAAE,QAAQ,CAAC,MAAM;YACrB,KAAK,EAAE,cAAc,CAAC,KAAK;AAC5B,SAAA,CAAC;QAEF,MAAM,UAAU,GAAG,kCAAkC;AAErD,QAAA,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE;AAC9B,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,MAAM,EAAE,IAAI;AACb,SAAA,CAAC;;IACF,OAAO,GAAG,EAAE;AACZ,QAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAClB,QAAA,OAAO,IAAI;;AAGb,IAAA,OAAO,cAAc;AACvB;AAEO,eAAe,YAAY,CAAC,GAAgC,EAAA;AACjE,IAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG;AAAE,QAAA,OAAO,KAAK;IAEhC,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AACxD,QAAA,KAAK,EAAE;AACL,YAAA,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG;AACjB,SAAA;AACF,KAAA,CAAC;IAEF,IAAI,cAAc,EAAE;QAClB,MAAM,UAAU,GAAG,kCAAkC;AAErD,QAAA,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC;AAE9B,QAAA,OAAO,IAAI;;AAGb,IAAA,OAAO,KAAK;AACd;;;;"}
1
+ {"version":3,"file":"AccountService.js","sources":["../../src/services/AccountService.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventService.d.ts","sourceRoot":"","sources":["../../src/services/EventService.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,KAAK,IAAI,aAAa,EACvB,MAAM,aAAa,CAAA;AAGpB,wBAAsB,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;;;;CAAA,gBAoB1D;AAkBD,wBAAsB,YAAY,CAChC,KAAK,KAAA,EACL,aAAa,KAAA,EACb,aAAa,KAAA,EACb,MAAM,KAAA,kBA0KP;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,QAOlE;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE;IAAE,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EAC9B,MAAM,CAAC,EAAE,GAAG,QAMb"}
1
+ {"version":3,"file":"EventService.d.ts","sourceRoot":"","sources":["../../src/services/EventService.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,KAAK,IAAI,aAAa,EACvB,MAAM,aAAa,CAAA;AAGpB,wBAAsB,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;;;;CAAA,gBAyB1D;AAiDD,wBAAsB,YAAY,CAChC,KAAK,KAAA,EACL,aAAa,KAAA,EACb,aAAa,KAAA,EACb,MAAM,KAAA,kBAyMP;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,QAOlE;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE;IAAE,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EAC9B,MAAM,CAAC,EAAE,GAAG,QAMb"}
@@ -4,47 +4,112 @@ import { BaseUserNotificationType } from '../types.js';
4
4
  import logger from '../lib/logger.js';
5
5
 
6
6
  async function receiveEvents({ events, ctx, prisma }) {
7
- if (!Array.isArray(events))
8
- return;
7
+ if (!Array.isArray(events) || events.length === 0)
8
+ return [];
9
9
  const definedEvents = await prisma.event.findMany({
10
10
  include: {
11
11
  achievements: true,
12
12
  },
13
13
  });
14
14
  const definedLevels = await prisma.playerLevel.findMany();
15
- const promises = await Promise.all(events.map(async (event) => receiveEvent({ ...event, ctx }, definedEvents, definedLevels, prisma)));
16
- const results = prisma.$transaction(promises.flat());
15
+ const perEventOps = await Promise.all(events.map(async (event) => receiveEvent({ ...event, ctx }, definedEvents, definedLevels, prisma)));
16
+ const ops = perEventOps.flat();
17
+ if (ops.length === 0)
18
+ return [];
19
+ const transaction = prisma?.$transaction;
20
+ const results = typeof transaction === 'function' ? transaction.call(prisma, ops) : Promise.all(ops);
17
21
  return results;
18
22
  }
19
23
  function prepareAchievementData({ achievementId, gameId, periodIx, playerId, count, }) {
20
24
  return {
21
25
  count,
26
+ periodIx,
22
27
  achievement: { connect: { id: achievementId } },
23
28
  game: { connect: { id: gameId } },
24
29
  period: { connect: { gameId_index: { gameId, index: periodIx } } },
25
30
  player: { connect: { id: playerId } },
26
31
  };
27
32
  }
33
+ function evaluateConditions(conditions, facts) {
34
+ if (!conditions || !Array.isArray(conditions) || conditions.length === 0)
35
+ return true;
36
+ if (!facts)
37
+ return false;
38
+ return conditions.every((cond) => {
39
+ const actual = facts[cond.fact];
40
+ if (actual == null)
41
+ return false;
42
+ switch (cond.op) {
43
+ case 'gt':
44
+ return actual > cond.value;
45
+ case 'gte':
46
+ return actual >= cond.value;
47
+ case 'lt':
48
+ return actual < cond.value;
49
+ case 'lte':
50
+ return actual <= cond.value;
51
+ case 'eq':
52
+ return actual === cond.value;
53
+ case 'neq':
54
+ return actual !== cond.value;
55
+ default:
56
+ return false;
57
+ }
58
+ });
59
+ }
28
60
  async function receiveEvent(event, definedEvents, definedLevels, prisma) {
29
61
  const matchingEvent = definedEvents.find((item) => item.id === event.type);
30
62
  // console.warn(event, matchingEvent)
31
63
  // if there is a matching event and it awards achievements, process each
32
64
  if (matchingEvent && matchingEvent.achievements?.length > 0) {
33
- const awardedAchievements = await matchingEvent.achievements.reduce(async (acc, achievement) => {
34
- if (achievement.when === DB.AchievementFrequency.FIRST &&
65
+ const awardedAchievements = {
66
+ achievements: [],
67
+ achievementKeys: [],
68
+ rewards: {},
69
+ };
70
+ for (const achievement of matchingEvent.achievements) {
71
+ // skip if event facts don't match achievement conditions
72
+ if (!evaluateConditions(achievement.conditions, event.facts)) {
73
+ continue;
74
+ }
75
+ const isPeriodScoped = achievement.scope === DB.AchievementScope.PERIOD;
76
+ // For GAME-scoped FIRST achievements, skip if already earned globally
77
+ if (!isPeriodScoped &&
78
+ achievement.when === DB.AchievementFrequency.FIRST &&
35
79
  event.ctx.achievements.includes(achievement.id)) {
36
- return acc;
80
+ continue;
37
81
  }
38
- const existingInstance = await prisma.achievementInstance.findFirst({
39
- where: {
40
- achievement: {
41
- id: achievement.id,
82
+ let existingInstance;
83
+ if (isPeriodScoped) {
84
+ // PERIOD scope: look up by (achievementId, playerId, periodIx)
85
+ existingInstance = await prisma.achievementInstance.findUnique({
86
+ where: {
87
+ achievementId_playerId_periodIx: {
88
+ achievementId: achievement.id,
89
+ playerId: event.ctx.args.playerId,
90
+ periodIx: event.ctx.args.periodIx,
91
+ },
42
92
  },
43
- player: {
44
- id: event.ctx.args.playerId,
93
+ });
94
+ // For PERIOD-scoped FIRST achievements, skip if already earned this period
95
+ if (achievement.when === DB.AchievementFrequency.FIRST &&
96
+ existingInstance) {
97
+ continue;
98
+ }
99
+ }
100
+ else {
101
+ // GAME scope: look up by (achievementId, playerId) ignoring period
102
+ existingInstance = await prisma.achievementInstance.findFirst({
103
+ where: {
104
+ achievement: {
105
+ id: achievement.id,
106
+ },
107
+ player: {
108
+ id: event.ctx.args.playerId,
109
+ },
45
110
  },
46
- },
47
- });
111
+ });
112
+ }
48
113
  let achievementInstance;
49
114
  if (existingInstance) {
50
115
  achievementInstance = await prisma.achievementInstance.update({
@@ -71,25 +136,16 @@ async function receiveEvent(event, definedEvents, definedLevels, prisma) {
71
136
  }),
72
137
  });
73
138
  }
74
- return {
75
- achievements: [
76
- ...acc.achievements,
77
- {
78
- achievement,
79
- achievementInstance,
80
- },
81
- ],
82
- achievementKeys: [...acc.achievementKeys, achievement.id],
83
- rewards: {
84
- ...acc.rewards,
85
- xp: (acc.rewards.xp ?? 0) + (achievement.reward?.xp ?? 0),
86
- },
139
+ awardedAchievements.achievements.push({
140
+ achievement,
141
+ achievementInstance,
142
+ });
143
+ awardedAchievements.achievementKeys.push(achievement.id);
144
+ awardedAchievements.rewards = {
145
+ ...awardedAchievements.rewards,
146
+ xp: (awardedAchievements.rewards.xp ?? 0) + (achievement.reward?.xp ?? 0),
87
147
  };
88
- }, {
89
- achievements: [],
90
- achievementKeys: [],
91
- rewards: {},
92
- });
148
+ }
93
149
  const currentLevelPlus1 = definedLevels.find((level) => level.index === event.ctx.currentLevelIx + 1);
94
150
  const currentLevelPlus2 = definedLevels.find((level) => level.index === event.ctx.currentLevelIx + 2);
95
151
  if (awardedAchievements.achievements.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"EventService.js","sources":["../../src/services/EventService.ts"],"sourcesContent":[null],"names":["UserNotificationType","log"],"mappings":";;;;;AASO,eAAe,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAA;AACzD,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE;IAE5B,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;AAChD,QAAA,OAAO,EAAE;AACP,YAAA,YAAY,EAAE,IAAI;AACnB,SAAA;AACF,KAAA,CAAC;IAEF,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE;AAEzD,IAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,MAAM,CAAC,GAAG,CAAC,OAAO,KAAK,KACrB,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,CACtE,CACF;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAEpD,IAAA,OAAO,OAAO;AAChB;AAEA,SAAS,sBAAsB,CAAC,EAC9B,aAAa,EACb,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,KAAK,GACN,EAAA;IACC,OAAO;QACL,KAAK;QACL,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE;QAC/C,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;AACjC,QAAA,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAClE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;KACtC;AACH;AAEO,eAAe,YAAY,CAChC,KAAK,EACL,aAAa,EACb,aAAa,EACb,MAAM,EAAA;AAEN,IAAA,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC;;;IAI1E,IAAI,aAAa,IAAI,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,CAAC,EAAE;AAC3D,QAAA,MAAM,mBAAmB,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,MAAM,CACjE,OAAO,GAAG,EAAE,WAAW,KAAI;YACzB,IACE,WAAW,CAAC,IAAI,KAAK,EAAE,CAAC,oBAAoB,CAAC,KAAK;AAClD,gBAAA,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAC/C;AACA,gBAAA,OAAO,GAAG;;YAGZ,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAClE,gBAAA,KAAK,EAAE;AACL,oBAAA,WAAW,EAAE;wBACX,EAAE,EAAE,WAAW,CAAC,EAAE;AACnB,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC5B,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC;AAEF,YAAA,IAAI,mBAAmB;YACvB,IAAI,gBAAgB,EAAE;AACpB,gBAAA,mBAAmB,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC;AAC5D,oBAAA,KAAK,EAAE;wBACL,EAAE,EAAE,gBAAgB,CAAC,EAAE;AACxB,qBAAA;oBACD,IAAI,EAAE,sBAAsB,CAAC;AAC3B,wBAAA,KAAK,EAAE,gBAAgB,CAAC,KAAK,GAAG,CAAC;wBACjC,aAAa,EAAE,WAAW,CAAC,EAAE;AAC7B,wBAAA,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;AAC7B,wBAAA,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;AACjC,wBAAA,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;qBAClC,CAAC;AACH,iBAAA,CAAC;;iBACG;AACL,gBAAA,mBAAmB,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC;oBAC5D,IAAI,EAAE,sBAAsB,CAAC;AAC3B,wBAAA,KAAK,EAAE,CAAC;wBACR,aAAa,EAAE,WAAW,CAAC,EAAE;AAC7B,wBAAA,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;AAC7B,wBAAA,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;AACjC,wBAAA,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;qBAClC,CAAC;AACH,iBAAA,CAAC;;YAGJ,OAAO;AACL,gBAAA,YAAY,EAAE;oBACZ,GAAG,GAAG,CAAC,YAAY;AACnB,oBAAA;wBACE,WAAW;wBACX,mBAAmB;AACpB,qBAAA;AACF,iBAAA;gBACD,eAAe,EAAE,CAAC,GAAG,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC,EAAE,CAAC;AACzD,gBAAA,OAAO,EAAE;oBACP,GAAG,GAAG,CAAC,OAAO;AACd,oBAAA,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;AAC1D,iBAAA;aACF;AACH,SAAC,EACD;AACE,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA,CACF;QAED,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAC1C,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,CACxD;QAED,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAC1C,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,CACxD;QAED,IAAI,mBAAmB,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/C,IACE,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,EAAE;gBACrD,iBAAiB,CAAC,UAAU,EAC5B;AACA,gBAAA,uBAAuB,CACrB;AACE,oBAAA,IAAI,EAAE;AACJ,wBAAA,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC7B,qBAAA;iBACF,EACD;AACE,oBAAA;wBACE,IAAI,EAAEA,wBAAoB,CAAC,oBAAoB;AAChD,qBAAA;AACF,iBAAA,CACF;AACD,gBAAA,uBAAuB,CACrB;AACE,oBAAA,IAAI,EAAE;AACJ,wBAAA,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC7B,qBAAA;iBACF,EACD;AACE,oBAAA;wBACE,IAAI,EAAEA,wBAAoB,CAAC,QAAQ;AACpC,qBAAA;AACF,iBAAA,CACF;gBAED,OAAO;AACL,oBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AACnB,wBAAA,KAAK,EAAE;AACL,4BAAA,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC5B,yBAAA;AACD,wBAAA,IAAI,EAAE;AACJ,4BAAA,UAAU,EAAE;AACV,gCAAA,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE;AAC1C,6BAAA;4BACD,gBAAgB,EAAE,iBAAiB,CAAC,UAAU;AAC9C,4BAAA,KAAK,EAAE;AACL,gCAAA,OAAO,EAAE;oCACP,KAAK,EAAE,iBAAiB,CAAC,KAAK;AAC/B,iCAAA;AACF,6BAAA;AACD,4BAAA,eAAe,EAAE;gCACf,IAAI,EAAE,mBAAmB,CAAC,eAAe;AAC1C,6BAAA;AACF,yBAAA;qBACF,CAAC;iBACH;;iBACI;AACL,gBAAA,uBAAuB,CACrB;AACE,oBAAA,IAAI,EAAE;AACJ,wBAAA,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC7B,qBAAA;iBACF,EACD;AACE,oBAAA;wBACE,IAAI,EAAEA,wBAAoB,CAAC,oBAAoB;AAChD,qBAAA;AACF,iBAAA,CACF;gBAED,OAAO;AACL,oBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AACnB,wBAAA,KAAK,EAAE;AACL,4BAAA,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC5B,yBAAA;AACD,wBAAA,IAAI,EAAE;AACJ,4BAAA,UAAU,EAAE;AACV,gCAAA,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE;AAC1C,6BAAA;AACD,4BAAA,eAAe,EAAE;gCACf,IAAI,EAAE,mBAAmB,CAAC,eAAe;AAC1C,6BAAA;AACF,yBAAA;qBACF,CAAC;iBACH;;;AAIL,QAAA,OAAO,EAAE;;AAGX,IAAA,OAAO,EAAE;AACX;AAEM,SAAU,yBAAyB,CAAC,KAAyB,EAAA;AACjE,IAAA,IAAI;AACF,QAAA,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC;AACtC,QAAAC,MAAG,CAAC,IAAI,CAAC,2DAA2D,CAAC;;IACrE,OAAO,CAAC,EAAE;AACV,QAAAA,MAAG,CAAC,KAAK,CAAC,6CAA6C,EAAE,CAAC,CAAC;;AAE/D;AAEgB,SAAA,uBAAuB,CACrC,GAA8B,EAC9B,MAAY,EAAA;IAEZ,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;;AAE/B,QAAA,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,MAAa,CAAC;;AAE9D;;;;"}
1
+ {"version":3,"file":"EventService.js","sources":["../../src/services/EventService.ts"],"sourcesContent":[null],"names":["UserNotificationType","log"],"mappings":"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"}
@@ -201,7 +201,11 @@ export declare function updatePlayerData<PlayerFactsType>({ name, facts }: Updat
201
201
  description: string;
202
202
  image: string | null;
203
203
  reward: import("@prisma/client/runtime/library").JsonValue | null;
204
+ descriptionsByRole: import("@prisma/client/runtime/library").JsonValue | null;
204
205
  when: DB.$Enums.AchievementFrequency;
206
+ scope: DB.$Enums.AchievementScope;
207
+ activePeriods: number[];
208
+ conditions: import("@prisma/client/runtime/library").JsonValue | null;
205
209
  onEventId: string;
206
210
  };
207
211
  } & {
@@ -213,6 +217,7 @@ export declare function updatePlayerData<PlayerFactsType>({ name, facts }: Updat
213
217
  achievementId: string;
214
218
  playerId: string;
215
219
  periodId: number;
220
+ periodIx: number;
216
221
  })[];
217
222
  } & {
218
223
  number: number;
@@ -319,6 +324,7 @@ export declare function getGame(args: any, ctx: Context): Promise<({
319
324
  achievementId: string;
320
325
  playerId: string;
321
326
  periodId: number;
327
+ periodIx: number;
322
328
  }[];
323
329
  } & {
324
330
  number: number;
@@ -1 +1 @@
1
- {"version":3,"file":"GameService.d.ts","sourceRoot":"","sources":["../../src/services/GameService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GameService.d.ts","sourceRoot":"","sources":["../../src/services/GameService.ts"],"names":[],"mappings":"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"}
@@ -80,7 +80,7 @@ async function addGamePeriod({ gameId, facts, segmentCount }, ctx, { schema, ser
80
80
  });
81
81
  console.log(game.periods[0]?.facts, game.periods[0]?.segments[0]?.facts, initializedFacts);
82
82
  const res = await ctx.prisma.$transaction(async (tx) => {
83
- if (specificFacts) {
83
+ if (specificFacts && services.Period.updateDBAfterInitialize) {
84
84
  await services.Period.updateDBAfterInitialize(tx, specificFacts, {
85
85
  gameId,
86
86
  });
@@ -171,7 +171,7 @@ async function addPeriodSegment({ gameId, periodIx, facts, learningElements, sto
171
171
  periodIx,
172
172
  });
173
173
  const res = await ctx.prisma.$transaction(async (tx) => {
174
- if (specificFacts) {
174
+ if (specificFacts && services.Segment.updateDBAfterInitialize) {
175
175
  await services.Segment.updateDBAfterInitialize(tx, specificFacts, {
176
176
  gameId,
177
177
  });
@@ -375,11 +375,13 @@ async function activateNextPeriod({ gameId }, ctx, { services }) {
375
375
  if (!game.activePeriod?.activeSegment || !currentSegmentIx)
376
376
  return null;
377
377
  finalTransactionResult = await ctx.prisma.$transaction(async (tx) => {
378
- await services.Segment.updateDBBeforeActivation(tx, {
379
- gameId,
380
- periodIx: currentPeriodIx,
381
- segmentIx: currentSegmentIx,
382
- });
378
+ if (services.Segment.updateDBBeforeActivation) {
379
+ await services.Segment.updateDBBeforeActivation(tx, {
380
+ gameId,
381
+ periodIx: currentPeriodIx,
382
+ segmentIx: currentSegmentIx,
383
+ });
384
+ }
383
385
  // NOTE(JJ): The results may have changed
384
386
  const gameLocal = await tx.game.findUnique({
385
387
  where: { id: gameId },
@@ -518,7 +520,9 @@ async function activateNextPeriod({ gameId }, ctx, { services }) {
518
520
  facts: r.facts,
519
521
  playerId: r.player.connect.id,
520
522
  }));
521
- const resultsFactsPerPlayer = await services.PeriodResult.updateDBAfterEnd(tx, { results: resultsPerPlayer }, { gameId });
523
+ const resultsFactsPerPlayer = typeof services.PeriodResult.updateDBAfterEnd !== 'undefined'
524
+ ? await services.PeriodResult.updateDBAfterEnd(tx, { results: resultsPerPlayer }, { gameId })
525
+ : resultsPerPlayer;
522
526
  // TODO(JJ): We need to change the facts here
523
527
  results.forEach((r) => {
524
528
  const updatedResultFacts = resultsFactsPerPlayer.find((f) => f.playerId === r.player.connect.id)?.facts;
@@ -737,11 +741,9 @@ async function activateNextSegment({ gameId }, ctx, { services }) {
737
741
  },
738
742
  },
739
743
  });
740
- // TODO(JJ): These are currently nowhere used, how does the call look
741
- // like?
742
- // for (const extra of extras) {
743
- // await extra
744
- // }
744
+ for (const extra of extras) {
745
+ await extra;
746
+ }
745
747
  });
746
748
  break;
747
749
  }
@@ -753,11 +755,13 @@ async function activateNextSegment({ gameId }, ctx, { services }) {
753
755
  return null;
754
756
  }
755
757
  finalTransactionResult = await ctx.prisma.$transaction(async (tx) => {
756
- await services.Segment.updateDBBeforeActivation(tx, {
757
- gameId,
758
- periodIx: currentPeriodIx,
759
- segmentIx: currentSegmentIx,
760
- });
758
+ if (services.Segment.updateDBBeforeActivation) {
759
+ await services.Segment.updateDBBeforeActivation(tx, {
760
+ gameId,
761
+ periodIx: currentPeriodIx,
762
+ segmentIx: currentSegmentIx,
763
+ });
764
+ }
761
765
  // NOTE(JJ): The results may have changed
762
766
  const gameLocal = await tx.game.findUnique({
763
767
  where: { id: gameId },