@arken/seer-protocol 0.1.1 → 0.1.3

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 (118) hide show
  1. package/.rush/temp/shrinkwrap-deps.json +778 -53
  2. package/area/area.models.ts +15 -0
  3. package/area/area.router.ts +74 -0
  4. package/area/area.schema.ts +22 -0
  5. package/area/area.types.ts +25 -0
  6. package/area/index.ts +4 -0
  7. package/asset/asset.models.ts +59 -0
  8. package/asset/asset.router.ts +55 -0
  9. package/asset/asset.schema.ts +30 -0
  10. package/asset/asset.types.ts +21 -0
  11. package/asset/index.ts +4 -0
  12. package/chain/chain.models.ts +50 -0
  13. package/chain/chain.router.ts +104 -0
  14. package/chain/chain.schema.ts +67 -0
  15. package/chain/chain.types.ts +23 -0
  16. package/chain/index.ts +4 -0
  17. package/character/character.models.ts +174 -0
  18. package/character/character.router.ts +314 -0
  19. package/character/character.schema.ts +150 -0
  20. package/character/character.types.ts +63 -0
  21. package/character/index.ts +4 -0
  22. package/chat/chat.models.ts +43 -0
  23. package/chat/chat.router.ts +67 -0
  24. package/chat/chat.schema.ts +39 -0
  25. package/chat/chat.types.ts +19 -0
  26. package/chat/index.ts +4 -0
  27. package/collection/collection.models.ts +76 -0
  28. package/collection/collection.router.ts +91 -0
  29. package/collection/collection.schema.ts +90 -0
  30. package/collection/collection.types.ts +35 -0
  31. package/collection/index.ts +4 -0
  32. package/core/core.models.ts +1380 -0
  33. package/core/core.router.ts +1781 -0
  34. package/core/core.schema.ts +940 -0
  35. package/core/core.types.ts +339 -0
  36. package/core/index.ts +4 -0
  37. package/evolution/evolution.models.ts +1 -1
  38. package/evolution/evolution.router.ts +19 -19
  39. package/evolution/evolution.schema.ts +1 -1
  40. package/evolution/evolution.types.ts +2 -3
  41. package/evolution/index.ts +0 -1
  42. package/game/game.models.ts +53 -0
  43. package/game/game.router.ts +110 -0
  44. package/game/game.schema.ts +23 -0
  45. package/game/game.types.ts +27 -0
  46. package/game/index.ts +4 -0
  47. package/index.ts +43 -6
  48. package/infinite/index.ts +0 -1
  49. package/infinite/infinite.models.ts +1 -1
  50. package/infinite/infinite.router.ts +9 -9
  51. package/infinite/infinite.schema.ts +1 -1
  52. package/infinite/infinite.types.ts +2 -3
  53. package/interface/index.ts +4 -0
  54. package/interface/interface.canonicalize.ts +279 -0
  55. package/interface/interface.models.ts +40 -0
  56. package/interface/interface.router.ts +175 -0
  57. package/interface/interface.schema.ts +59 -0
  58. package/interface/interface.types.ts +24 -0
  59. package/isles/index.ts +0 -1
  60. package/isles/isles.models.ts +1 -1
  61. package/isles/isles.router.ts +9 -9
  62. package/isles/isles.schema.ts +1 -1
  63. package/isles/isles.types.ts +2 -3
  64. package/item/index.ts +4 -0
  65. package/item/item.models.ts +124 -0
  66. package/item/item.router.ts +103 -0
  67. package/item/item.schema.ts +150 -0
  68. package/item/item.types.ts +73 -0
  69. package/job/index.ts +4 -0
  70. package/job/job.models.ts +14 -0
  71. package/job/job.router.ts +44 -0
  72. package/job/job.schema.ts +9 -0
  73. package/job/job.types.ts +22 -0
  74. package/market/index.ts +4 -0
  75. package/market/market.models.ts +113 -0
  76. package/market/market.router.ts +73 -0
  77. package/market/market.schema.ts +149 -0
  78. package/market/market.types.ts +55 -0
  79. package/oasis/index.ts +0 -1
  80. package/oasis/oasis.models.ts +1 -1
  81. package/oasis/oasis.router.ts +5 -6
  82. package/oasis/oasis.schema.ts +1 -1
  83. package/oasis/oasis.types.ts +2 -3
  84. package/package.json +17 -4
  85. package/product/index.ts +4 -0
  86. package/product/product.models.ts +166 -0
  87. package/product/product.router.ts +93 -0
  88. package/product/product.schema.ts +186 -0
  89. package/product/product.types.ts +32 -0
  90. package/profile/index.ts +4 -0
  91. package/profile/profile.models.ts +214 -0
  92. package/profile/profile.router.ts +72 -0
  93. package/profile/profile.schema.ts +219 -0
  94. package/profile/profile.types.ts +21 -0
  95. package/raffle/index.ts +4 -0
  96. package/raffle/raffle.models.ts +44 -0
  97. package/raffle/raffle.router.ts +90 -0
  98. package/raffle/raffle.schema.ts +32 -0
  99. package/raffle/raffle.types.ts +29 -0
  100. package/router.ts +23 -29
  101. package/schema.ts +321 -0
  102. package/skill/index.ts +4 -0
  103. package/skill/skill.models.ts +16 -0
  104. package/skill/skill.router.ts +201 -0
  105. package/skill/skill.schema.ts +52 -0
  106. package/skill/skill.types.ts +32 -0
  107. package/trek/index.ts +0 -1
  108. package/trek/trek.models.ts +1 -1
  109. package/trek/trek.router.ts +2 -2
  110. package/trek/trek.schema.ts +1 -1
  111. package/trek/trek.types.ts +1 -1
  112. package/tsconfig.json +25 -17
  113. package/types.ts +174 -26
  114. package/video/index.ts +4 -0
  115. package/video/video.models.ts +25 -0
  116. package/video/video.router.ts +143 -0
  117. package/video/video.schema.ts +46 -0
  118. package/video/video.types.ts +32 -0
@@ -0,0 +1,4 @@
1
+ export * as Types from './character.types';
2
+ export * as Models from './character.models';
3
+ export * as Schemas from './character.schema';
4
+ export * from './character.router';
@@ -0,0 +1,43 @@
1
+ import * as mongo from '@arken/node/mongo';
2
+ import type * as Types from './chat.types';
3
+
4
+ // ChatGroup
5
+ export const ChatGroup = mongo.createModel<Types.ChatGroupDocument>('ChatGroup', {
6
+ name: { type: String, required: true, maxlength: 100 },
7
+ type: { type: String, required: true, enum: ['group', 'private'] },
8
+ members: [{ type: mongo.Schema.Types.ObjectId, ref: 'Profile' }],
9
+ externalId: { type: String },
10
+ externalPlatform: { type: String, enum: ['Telegram', 'Discord'] },
11
+ });
12
+
13
+ // ChatMessage
14
+ export const ChatMessage = mongo.createModel<Types.ChatMessageDocument>(
15
+ 'ChatMessage',
16
+ {
17
+ groupId: { type: mongo.Schema.Types.ObjectId, ref: 'ChatGroup', required: true },
18
+ profileId: { type: mongo.Schema.Types.ObjectId, ref: 'Profile', required: true },
19
+ content: { type: String },
20
+ mediaUrl: { type: String },
21
+ replyToId: { type: mongo.Schema.Types.ObjectId, ref: 'ChatMessage' },
22
+ reactions: [
23
+ {
24
+ profileId: { type: mongo.Schema.Types.ObjectId, ref: 'Profile' },
25
+ reaction: { type: String },
26
+ },
27
+ ],
28
+ externalId: { type: String },
29
+ externalPlatform: { type: String, enum: ['Telegram', 'Discord'] },
30
+ isSpam: { type: Boolean, default: false },
31
+ tags: { type: mongo.Schema.Types.Mixed }, // Correctly define as array of Mixed
32
+ summary: { type: String },
33
+ entities: { type: mongo.Schema.Types.Mixed }, // Correctly define as array of Mixed
34
+ type: {
35
+ type: String,
36
+ default: 'text',
37
+ enum: ['text', 'image', 'video', 'audio', 'file', 'system'],
38
+ },
39
+ },
40
+ {
41
+ indexes: [{ groupId: 1, createdDate: 1 }, { profileId: 1 }, { status: 1 }, { replyToId: 1 }, { type: 1 }],
42
+ }
43
+ );
@@ -0,0 +1,67 @@
1
+ // module/chat.router.ts
2
+
3
+ import { z as zod } from 'zod';
4
+ import { initTRPC, inferRouterInputs, inferRouterOutputs } from '@trpc/server';
5
+ import { customErrorFormatter, hasRole } from '@arken/node/rpc';
6
+ import type { RouterContext } from '../types';
7
+ import { ChatGroup, ChatMessage } from './chat.schema';
8
+
9
+ export const z = zod;
10
+ export const t = initTRPC.context<RouterContext>().create();
11
+ export const router = t.router;
12
+ export const procedure = t.procedure;
13
+
14
+ export const createRouter = () =>
15
+ router({
16
+ getChatGroup: procedure
17
+ .use(hasRole('guest', t))
18
+ .use(customErrorFormatter(t))
19
+ .input(z.object({ chatGroupId: z.string() }))
20
+ .query(({ input, ctx }) => (ctx.app.service.Chat.getChatGroup as any)(input, ctx)),
21
+
22
+ getChatGroups: procedure
23
+ .use(hasRole('guest', t))
24
+ .use(customErrorFormatter(t))
25
+ .input(z.object({ chatGroupId: z.string() }))
26
+ .query(({ input, ctx }) => (ctx.app.service.Chat.getChatGroup as any)(input, ctx)),
27
+
28
+ createChatGroup: procedure
29
+ .use(hasRole('admin', t))
30
+ .use(customErrorFormatter(t))
31
+ .input(ChatGroup)
32
+ .mutation(({ input, ctx }) => (ctx.app.service.Chat.createChatGroup as any)(input, ctx)),
33
+
34
+ updateChatGroup: procedure
35
+ .use(hasRole('admin', t))
36
+ .use(customErrorFormatter(t))
37
+ .input(z.object({ chatGroupId: z.string(), data: ChatGroup.partial() }))
38
+ .mutation(({ input, ctx }) => (ctx.app.service.Chat.updateChatGroup as any)(input, ctx)),
39
+
40
+ getChatMessage: procedure
41
+ .use(hasRole('guest', t))
42
+ .use(customErrorFormatter(t))
43
+ .input(z.object({ chatMessageId: z.string() }))
44
+ .query(({ input, ctx }) => (ctx.app.service.Chat.getChatMessage as any)(input, ctx)),
45
+
46
+ getChatMessages: procedure
47
+ .use(hasRole('guest', t))
48
+ .use(customErrorFormatter(t))
49
+ .input(z.object({ chatMessageId: z.string() }))
50
+ .query(({ input, ctx }) => (ctx.app.service.Chat.getChatMessage as any)(input, ctx)),
51
+
52
+ createChatMessage: procedure
53
+ .use(hasRole('admin', t))
54
+ .use(customErrorFormatter(t))
55
+ .input(ChatMessage)
56
+ .mutation(({ input, ctx }) => (ctx.app.service.Chat.createChatMessage as any)(input, ctx)),
57
+
58
+ updateChatMessage: procedure
59
+ .use(hasRole('admin', t))
60
+ .use(customErrorFormatter(t))
61
+ .input(z.object({ chatMessageId: z.string(), data: ChatMessage.partial() }))
62
+ .mutation(({ input, ctx }) => (ctx.app.service.Chat.updateChatMessage as any)(input, ctx)),
63
+ });
64
+
65
+ export type Router = ReturnType<typeof createRouter>;
66
+ export type RouterInput = inferRouterInputs<Router>;
67
+ export type RouterOutput = inferRouterOutputs<Router>;
@@ -0,0 +1,39 @@
1
+ import { z, ObjectId, Entity } from '../schema';
2
+
3
+ export const ChatGroup = Entity.merge(
4
+ z.object({
5
+ name: z
6
+ .string()
7
+ .max(100)
8
+ .min(1),
9
+ type: z.enum(['group', 'private']),
10
+ members: z.array(ObjectId),
11
+ externalId: z.string().optional(),
12
+ externalPlatform: z.enum(['Telegram', 'Discord']).optional(),
13
+ })
14
+ );
15
+
16
+ export const ChatMessage = Entity.merge(
17
+ z.object({
18
+ groupId: ObjectId,
19
+ profileId: ObjectId,
20
+ content: z.string().optional(),
21
+ mediaUrl: z.string().optional(),
22
+ replyToId: ObjectId.optional(),
23
+ reactions: z
24
+ .array(
25
+ z.object({
26
+ profileId: ObjectId,
27
+ reaction: z.string(),
28
+ })
29
+ )
30
+ .optional(),
31
+ externalId: z.string().optional(),
32
+ externalPlatform: z.enum(['Telegram', 'Discord']).optional(),
33
+ isSpam: z.boolean().default(false),
34
+ tags: z.array(z.unknown()).default([]),
35
+ summary: z.string().optional(),
36
+ entities: z.array(z.unknown()).default([]),
37
+ type: z.enum(['text', 'image', 'video', 'audio', 'file', 'system']).default('text'),
38
+ })
39
+ );
@@ -0,0 +1,19 @@
1
+ // module/chat.types.ts
2
+
3
+ import { z } from 'zod';
4
+ import * as schema from './chat.schema';
5
+ import { Document, Model } from '@arken/node/mongo';
6
+
7
+ export type * from './chat.router';
8
+ export type { RouterContext } from '../types';
9
+
10
+ export type ChatGroup = z.infer<typeof schema.ChatGroup>;
11
+ export type ChatGroupDocument = ChatGroup & Document;
12
+
13
+ export type ChatMessage = z.infer<typeof schema.ChatMessage>;
14
+ export type ChatMessageDocument = ChatMessage & Document;
15
+
16
+ export type Mappings = {
17
+ ChatGroup: Model<ChatGroupDocument>;
18
+ ChatMessage: Model<ChatMessageDocument>;
19
+ };
package/chat/index.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * as Types from './chat.types';
2
+ export * as Models from './chat.models';
3
+ export * as Schemas from './chat.schema';
4
+ export * from './chat.router';
@@ -0,0 +1,76 @@
1
+ import * as mongo from '@arken/node/mongo';
2
+ import type * as Types from './collection.types';
3
+
4
+ export const CollectibleCollection = mongo.createModel<Types.CollectibleCollectionDocument>('CollectibleCollection', {
5
+ hype: { type: Number, default: 0 },
6
+ value: { type: Number, default: 0 },
7
+ });
8
+
9
+ export const CollectibleCardBox = mongo.createModel<Types.CollectibleCardBoxDocument>('CollectibleCardBox', {
10
+ collectibleCollectionId: { type: mongo.Schema.Types.ObjectId, ref: 'CollectibleCollection', required: true },
11
+ franchise: { type: String, required: true, trim: true },
12
+ });
13
+
14
+ export const CollectibleCardPack = mongo.createModel<Types.CollectibleCardPackDocument>('CollectibleCardPack', {
15
+ collectibleCollectionId: { type: mongo.Schema.Types.ObjectId, ref: 'CollectibleCollection', required: true },
16
+ franchise: { type: String, required: true, trim: true },
17
+ ungraded: { type: Number, default: 0 },
18
+ grade10: { type: Number, default: 0 },
19
+ grade9: { type: Number, default: 0 },
20
+ grade8: { type: Number, default: 0 },
21
+ grade7: { type: Number, default: 0 },
22
+ grade6: { type: Number, default: 0 },
23
+ grade5: { type: Number, default: 0 },
24
+ grade4: { type: Number, default: 0 },
25
+ grade3: { type: Number, default: 0 },
26
+ grade2: { type: Number, default: 0 },
27
+ grade1: { type: Number, default: 0 },
28
+ additional: { type: String, trim: true },
29
+ code: { type: String, trim: true },
30
+ hype: { type: Number, default: 0 },
31
+ series: { type: String, trim: true },
32
+ category: { type: String, trim: true },
33
+ year: { type: Number },
34
+ });
35
+
36
+ export const CollectibleCard = mongo.createModel<Types.CollectibleCardDocument>('CollectibleCard', {
37
+ collectibleCollectionId: { type: mongo.Schema.Types.ObjectId, ref: 'CollectibleCollection', required: true },
38
+ franchise: { type: String, required: true, trim: true },
39
+ ungraded: { type: Number, default: 0 },
40
+ grade10: { type: Number, default: 0 },
41
+ grade9: { type: Number, default: 0 },
42
+ grade8: { type: Number, default: 0 },
43
+ grade7: { type: Number, default: 0 },
44
+ grade6: { type: Number, default: 0 },
45
+ grade5: { type: Number, default: 0 },
46
+ grade4: { type: Number, default: 0 },
47
+ grade3: { type: Number, default: 0 },
48
+ grade2: { type: Number, default: 0 },
49
+ grade1: { type: Number, default: 0 },
50
+ additional: { type: String, trim: true },
51
+ code: { type: String, trim: true },
52
+ hype: { type: Number, default: 0 },
53
+ series: { type: String, trim: true },
54
+ category: { type: String, trim: true },
55
+ year: { type: Number },
56
+ });
57
+
58
+ export const Set = mongo.createModel<Types.SetDocument>('Set', {
59
+ seriesId: { type: mongo.Schema.Types.ObjectId, ref: 'Series', required: true },
60
+ name: { type: String, required: true, trim: true },
61
+ language: { type: String, required: true, trim: true },
62
+ live: { type: Boolean, default: false },
63
+ releaseDate: { type: String, required: true, trim: true },
64
+ });
65
+
66
+ export const Card = mongo.createModel<Types.CardDocument>('Card', {
67
+ setId: { type: mongo.Schema.Types.ObjectId, ref: 'Set', required: true },
68
+ name: { type: String, required: true, trim: true },
69
+ language: { type: String, required: true, trim: true },
70
+ releaseDate: { type: String, required: true, trim: true },
71
+ cardId: { type: Number, required: true },
72
+ });
73
+
74
+ export const Series = mongo.createModel<Types.SeriesDocument>('Series', {
75
+ name: { type: String, required: true, trim: true },
76
+ });
@@ -0,0 +1,91 @@
1
+ // module/collection.router.ts
2
+
3
+ import { z as zod } from 'zod';
4
+ import { initTRPC, inferRouterInputs, inferRouterOutputs } from '@trpc/server';
5
+ import { customErrorFormatter, hasRole } from '@arken/node/rpc';
6
+ import type { RouterContext } from '../types';
7
+ import { CollectibleCollection, CollectibleCardBox, CollectibleCardPack, CollectibleCard } from './collection.schema';
8
+
9
+ export const z = zod;
10
+ export const t = initTRPC.context<RouterContext>().create();
11
+ export const router = t.router;
12
+ export const procedure = t.procedure;
13
+
14
+ export const createRouter = () =>
15
+ router({
16
+ getCollectibleCollection: procedure
17
+ .use(hasRole('guest', t))
18
+ .use(customErrorFormatter(t))
19
+ .input(z.object({ collectibleCollectionId: z.string() }))
20
+ .query(({ input, ctx }) => (ctx.app.service.Collection.getCollectibleCollection as any)(input, ctx)),
21
+
22
+ createCollectibleCollection: procedure
23
+ .use(hasRole('admin', t))
24
+ .use(customErrorFormatter(t))
25
+ .input(CollectibleCollection)
26
+ .mutation(({ input, ctx }) => (ctx.app.service.Collection.createCollectibleCollection as any)(input, ctx)),
27
+
28
+ updateCollectibleCollection: procedure
29
+ .use(hasRole('admin', t))
30
+ .use(customErrorFormatter(t))
31
+ .input(z.object({ collectibleCollectionId: z.string(), data: CollectibleCollection.partial() }))
32
+ .mutation(({ input, ctx }) => (ctx.app.service.Collection.updateCollectibleCollection as any)(input, ctx)),
33
+
34
+ getCollectibleCardBox: procedure
35
+ .use(hasRole('guest', t))
36
+ .use(customErrorFormatter(t))
37
+ .input(z.object({ collectibleCardBoxId: z.string() }))
38
+ .query(({ input, ctx }) => (ctx.app.service.Collection.getCollectibleCardBox as any)(input, ctx)),
39
+
40
+ createCollectibleCardBox: procedure
41
+ .use(hasRole('admin', t))
42
+ .use(customErrorFormatter(t))
43
+ .input(CollectibleCardBox)
44
+ .mutation(({ input, ctx }) => (ctx.app.service.Collection.createCollectibleCardBox as any)(input, ctx)),
45
+
46
+ updateCollectibleCardBox: procedure
47
+ .use(hasRole('admin', t))
48
+ .use(customErrorFormatter(t))
49
+ .input(z.object({ collectibleCardBoxId: z.string(), data: CollectibleCardBox.partial() }))
50
+ .mutation(({ input, ctx }) => (ctx.app.service.Collection.updateCollectibleCardBox as any)(input, ctx)),
51
+
52
+ getCollectibleCardPack: procedure
53
+ .use(hasRole('guest', t))
54
+ .use(customErrorFormatter(t))
55
+ .input(z.object({ collectibleCardPackId: z.string() }))
56
+ .query(({ input, ctx }) => (ctx.app.service.Collection.getCollectibleCardPack as any)(input, ctx)),
57
+
58
+ createCollectibleCardPack: procedure
59
+ .use(hasRole('admin', t))
60
+ .use(customErrorFormatter(t))
61
+ .input(CollectibleCardPack)
62
+ .mutation(({ input, ctx }) => (ctx.app.service.Collection.createCollectibleCardPack as any)(input, ctx)),
63
+
64
+ updateCollectibleCardPack: procedure
65
+ .use(hasRole('admin', t))
66
+ .use(customErrorFormatter(t))
67
+ .input(z.object({ collectibleCardPackId: z.string(), data: CollectibleCardPack.partial() }))
68
+ .mutation(({ input, ctx }) => (ctx.app.service.Collection.updateCollectibleCardPack as any)(input, ctx)),
69
+
70
+ getCollectibleCard: procedure
71
+ .use(hasRole('guest', t))
72
+ .use(customErrorFormatter(t))
73
+ .input(z.object({ collectibleCardId: z.string() }))
74
+ .query(({ input, ctx }) => (ctx.app.service.Collection.getCollectibleCard as any)(input, ctx)),
75
+
76
+ createCollectibleCard: procedure
77
+ .use(hasRole('admin', t))
78
+ .use(customErrorFormatter(t))
79
+ .input(CollectibleCard)
80
+ .mutation(({ input, ctx }) => (ctx.app.service.Collection.createCollectibleCard as any)(input, ctx)),
81
+
82
+ updateCollectibleCard: procedure
83
+ .use(hasRole('admin', t))
84
+ .use(customErrorFormatter(t))
85
+ .input(z.object({ collectibleCardId: z.string(), data: CollectibleCard.partial() }))
86
+ .mutation(({ input, ctx }) => (ctx.app.service.Collection.updateCollectibleCard as any)(input, ctx)),
87
+ });
88
+
89
+ export type Router = ReturnType<typeof createRouter>;
90
+ export type RouterInput = inferRouterInputs<Router>;
91
+ export type RouterOutput = inferRouterOutputs<Router>;
@@ -0,0 +1,90 @@
1
+ import { z, ObjectId, Entity } from '../schema';
2
+
3
+ export const CollectibleCollection = Entity.merge(
4
+ z.object({
5
+ hype: z.number().optional(),
6
+ value: z.number().optional(),
7
+ })
8
+ );
9
+
10
+ export const CollectibleCardBox = Entity.merge(
11
+ z.object({
12
+ collectibleCollectionId: ObjectId,
13
+ franchise: z.string().min(1),
14
+ })
15
+ );
16
+
17
+ export const CollectibleCardPack = Entity.merge(
18
+ z.object({
19
+ collectibleCollectionId: ObjectId,
20
+ franchise: z.string().min(1),
21
+ ungraded: z.number().optional(),
22
+ grade10: z.number().optional(),
23
+ grade9: z.number().optional(),
24
+ grade8: z.number().optional(),
25
+ grade7: z.number().optional(),
26
+ grade6: z.number().optional(),
27
+ grade5: z.number().optional(),
28
+ grade4: z.number().optional(),
29
+ grade3: z.number().optional(),
30
+ grade2: z.number().optional(),
31
+ grade1: z.number().optional(),
32
+ additional: z.string().optional(),
33
+ code: z.string().optional(),
34
+ hype: z.number().optional(),
35
+ series: z.string().optional(),
36
+ category: z.string().optional(),
37
+ year: z.number().optional(),
38
+ })
39
+ );
40
+
41
+ export const CollectibleCard = Entity.merge(
42
+ z.object({
43
+ collectibleCollectionId: ObjectId,
44
+ franchise: z.string().min(1),
45
+ ungraded: z.number().optional(),
46
+ grade10: z.number().optional(),
47
+ grade9: z.number().optional(),
48
+ grade8: z.number().optional(),
49
+ grade7: z.number().optional(),
50
+ grade6: z.number().optional(),
51
+ grade5: z.number().optional(),
52
+ grade4: z.number().optional(),
53
+ grade3: z.number().optional(),
54
+ grade2: z.number().optional(),
55
+ grade1: z.number().optional(),
56
+ additional: z.string().optional(),
57
+ code: z.string().optional(),
58
+ hype: z.number().optional(),
59
+ series: z.string().optional(),
60
+ category: z.string().optional(),
61
+ year: z.number().optional(),
62
+ })
63
+ );
64
+
65
+ export const Card = Entity.merge(
66
+ z.object({
67
+ setId: ObjectId,
68
+ name: z.string(),
69
+ language: z.string(),
70
+ releaseDate: z.string(),
71
+ cardId: z.number(),
72
+ })
73
+ );
74
+
75
+ export const Set = Entity.merge(
76
+ z.object({
77
+ seriesId: ObjectId,
78
+ name: z.string(),
79
+ language: z.string(),
80
+ live: z.boolean(),
81
+ releaseDate: z.string(),
82
+ cards: z.array(Card).optional(),
83
+ })
84
+ );
85
+
86
+ export const Series = Entity.merge(
87
+ z.object({
88
+ name: z.string(),
89
+ })
90
+ );
@@ -0,0 +1,35 @@
1
+ // module/collection.types.ts
2
+
3
+ import { z } from 'zod';
4
+ import * as schema from './collection.schema';
5
+ import { Document, Model } from '@arken/node/mongo';
6
+ import exp from 'constants';
7
+
8
+ export type * from './collection.router';
9
+ export type { RouterContext } from '../types';
10
+
11
+ export type CollectibleCollection = z.infer<typeof schema.CollectibleCollection>;
12
+ export type CollectibleCardBox = z.infer<typeof schema.CollectibleCardBox>;
13
+ export type CollectibleCardPack = z.infer<typeof schema.CollectibleCardPack>;
14
+ export type CollectibleCard = z.infer<typeof schema.CollectibleCard>;
15
+ export type Card = z.infer<typeof schema.Card>;
16
+ export type Set = z.infer<typeof schema.Set>;
17
+ export type Series = z.infer<typeof schema.Series>;
18
+
19
+ export type CollectibleCollectionDocument = CollectibleCollection & Document;
20
+ export type CollectibleCardBoxDocument = CollectibleCardBox & Document;
21
+ export type CollectibleCardPackDocument = CollectibleCardPack & Document;
22
+ export type CollectibleCardDocument = CollectibleCard & Document;
23
+ export type CardDocument = Card & Document;
24
+ export type SetDocument = Set & Document;
25
+ export type SeriesDocument = Series & Document;
26
+
27
+ export type Mappings = {
28
+ CollectibleCollection: Model<CollectibleCollectionDocument>;
29
+ CollectibleCardBox: Model<CollectibleCardBoxDocument>;
30
+ CollectibleCardPack: Model<CollectibleCardPackDocument>;
31
+ CollectibleCard: Model<CollectibleCardDocument>;
32
+ Card: Model<CardDocument>;
33
+ Set: Model<SetDocument>;
34
+ Series: Model<SeriesDocument>;
35
+ };
@@ -0,0 +1,4 @@
1
+ export * as Types from './collection.types';
2
+ export * as Models from './collection.models';
3
+ export * as Schemas from './collection.schema';
4
+ export * from './collection.router';