@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,174 @@
1
+ import * as mongo from '@arken/node/mongo';
2
+ import type * as Types from './character.types';
3
+
4
+ const { addTagVirtuals, addApplicationVirtual } = mongo;
5
+
6
+ // CharacterEquipment Schema
7
+ const CharacterEquipment = new mongo.Schema(
8
+ {
9
+ items: [
10
+ {
11
+ itemId: { type: mongo.Schema.Types.ObjectId, ref: 'Item', required: true },
12
+ slotId: { type: mongo.Schema.Types.ObjectId, ref: 'ItemSlot', required: true }, // e.g., 'head', 'chest', etc.
13
+ },
14
+ ],
15
+ },
16
+ {
17
+ _id: false,
18
+ toJSON: { virtuals: true }, // Ensure virtuals are included in JSON responses
19
+ toObject: { virtuals: true }, // Ensure virtuals are included in object responses
20
+ } // Prevents Mongoose from creating an _id field for subdocuments
21
+ );
22
+
23
+ // Add virtual for `item`
24
+ CharacterEquipment.virtual('item', {
25
+ ref: 'Item',
26
+ localField: 'items.itemId',
27
+ foreignField: '_id',
28
+ justOne: true, // Assuming an `itemId` corresponds to one `Item`
29
+ });
30
+
31
+ // Add virtual for `slot`
32
+ CharacterEquipment.virtual('slot', {
33
+ ref: 'ItemSlot',
34
+ localField: 'items.slotId',
35
+ foreignField: '_id',
36
+ justOne: true, // Assuming a `slotId` corresponds to one `ItemSlot`
37
+ });
38
+
39
+ // CharacterInventory Schema
40
+ const CharacterInventory = new mongo.Schema(
41
+ {
42
+ items: [
43
+ {
44
+ itemId: { type: mongo.Schema.Types.ObjectId, ref: 'Item', required: true },
45
+ x: { type: Number },
46
+ y: { type: Number },
47
+ },
48
+ ],
49
+ },
50
+ { _id: false }
51
+ );
52
+
53
+ // Add virtual for `item`
54
+ CharacterEquipment.virtual('item', {
55
+ ref: 'Item',
56
+ localField: 'items.itemId',
57
+ foreignField: '_id',
58
+ justOne: true, // Assuming an `itemId` corresponds to one `Item`
59
+ });
60
+
61
+ export const Character = mongo.createModel<Types.CharacterDocument>(
62
+ 'Character',
63
+ {
64
+ // teamId: { type: mongo.Schema.Types.ObjectId, ref: 'Team', required: false, autopopulate: true },
65
+ ratingId: { type: mongo.Schema.Types.ObjectId, ref: 'Rating', required: false },
66
+ classId: { type: mongo.Schema.Types.ObjectId, ref: 'CharacterClass', required: false },
67
+ raceId: { type: mongo.Schema.Types.ObjectId, ref: 'CharacterRace', required: false },
68
+ factionId: { type: mongo.Schema.Types.ObjectId, ref: 'CharacterFaction', required: false },
69
+ genderId: { type: mongo.Schema.Types.ObjectId, ref: 'CharacterGender', required: false },
70
+ guildId: { type: mongo.Schema.Types.ObjectId, ref: 'CharacterGuild', required: false },
71
+ isPrimary: { type: Boolean, required: false, default: false },
72
+ isBoss: { type: Boolean, required: false, default: false },
73
+ token: { type: String, required: false, trim: true },
74
+ points: { type: Number, default: 0, required: true },
75
+ equipmentIndex: { type: Number, default: 0 },
76
+ equipment: [{ type: CharacterEquipment, default: [] }],
77
+ inventoryIndex: { type: Number, default: 0 },
78
+ inventory: [{ type: CharacterInventory, default: [] }],
79
+ energyIds: [{ type: mongo.Schema.Types.ObjectId, ref: 'Energy', required: false }],
80
+ areaIds: [{ type: mongo.Schema.Types.ObjectId, ref: 'Area', required: false }],
81
+ typeIds: [{ type: mongo.Schema.Types.ObjectId, ref: 'CharacterType', required: false }],
82
+ itemMaterialIds: [{ type: mongo.Schema.Types.ObjectId, ref: 'ItemMaterial', required: false }],
83
+ // level: { type: Number, required: true },
84
+ // experience: { type: Number, required: true },
85
+ // gold: { type: Number, default: 0 },
86
+ },
87
+ {
88
+ extend: 'EntityFields',
89
+ cache: { enabled: true, ttlMs: 5 * 60 * 1000 },
90
+ indexes: [{ points: 1 }, { token: 1 }],
91
+ virtuals: [
92
+ ...addTagVirtuals('Character'),
93
+ ...addApplicationVirtual(),
94
+ // {
95
+ // name: 'team',
96
+ // },
97
+ {
98
+ name: 'energies',
99
+ ref: 'Energy',
100
+ localField: 'energyIds',
101
+ foreignField: '_id',
102
+ },
103
+ {
104
+ name: 'areas',
105
+ ref: 'Area',
106
+ localField: 'areaIds',
107
+ foreignField: '_id',
108
+ },
109
+ {
110
+ name: 'types',
111
+ ref: 'CharacterType',
112
+ localField: 'typeIds',
113
+ foreignField: '_id',
114
+ },
115
+ {
116
+ name: 'itemMaterials',
117
+ ref: 'ItemMaterial',
118
+ localField: 'itemMaterialIds',
119
+ foreignField: '_id',
120
+ },
121
+ {
122
+ name: 'profile',
123
+ },
124
+ {
125
+ name: 'rating',
126
+ },
127
+ {
128
+ name: 'class',
129
+ },
130
+ {
131
+ name: 'race',
132
+ },
133
+ {
134
+ name: 'faction',
135
+ },
136
+ {
137
+ name: 'gender',
138
+ },
139
+ // { name: 'types', ref: 'CharacterType', localField: '_id', foreignField: 'characterId' },
140
+ // {
141
+ // name: 'inventory'
142
+ // ref: 'ItemSlot',
143
+ // localField: 'items.slotId',
144
+ // foreignField: '_id',
145
+ // justOne: true, // Assuming a `slotId` corresponds to one `ItemSlot`
146
+ // },
147
+ // {
148
+ // name: 'quests'
149
+ // },
150
+ ],
151
+ }
152
+ );
153
+
154
+ export const CharacterAbility = mongo.createModel<Types.CharacterAbilityDocument>('CharacterAbility', {});
155
+
156
+ export const CharacterAttribute = mongo.createModel<Types.CharacterAttributeDocument>('CharacterAttribute', {});
157
+
158
+ export const CharacterType = mongo.createModel<Types.CharacterTypeDocument>('CharacterType', {});
159
+
160
+ export const CharacterClass = mongo.createModel<Types.CharacterClassDocument>('CharacterClass', {});
161
+
162
+ export const CharacterFaction = mongo.createModel<Types.CharacterFactionDocument>('CharacterFaction', {});
163
+
164
+ export const CharacterRace = mongo.createModel<Types.CharacterRaceDocument>('CharacterRace', {});
165
+
166
+ export const CharacterGender = mongo.createModel<Types.CharacterGenderDocument>('CharacterGender', {});
167
+
168
+ export const CharacterPersonality = mongo.createModel<Types.CharacterPersonalityDocument>('CharacterPersonality', {});
169
+
170
+ export const CharacterTitle = mongo.createModel<Types.CharacterTitleDocument>('CharacterTitle', {});
171
+
172
+ export const CharacterGuild = mongo.createModel<Types.CharacterGuildDocument>('CharacterGuild', {});
173
+
174
+ export const CharacterNameChoice = mongo.createModel<Types.CharacterNameChoiceDocument>('CharacterNameChoice', {});
@@ -0,0 +1,314 @@
1
+ // module/character.router.ts
2
+
3
+ import { z as zod } from 'zod';
4
+ import { initTRPC } from '@trpc/server';
5
+ import { customErrorFormatter, hasRole } from '@arken/node/rpc';
6
+ import type { RouterContext } from '../types';
7
+ import {
8
+ Character,
9
+ CharacterAbility,
10
+ CharacterAttribute,
11
+ CharacterType,
12
+ CharacterClass,
13
+ CharacterRace,
14
+ CharacterGender,
15
+ CharacterPersonality,
16
+ CharacterTitle,
17
+ CharacterFaction,
18
+ CharacterNameChoice,
19
+ } from './character.schema';
20
+ import { Query, getQueryInput, inferRouterOutputs, inferRouterInputs } from '../schema';
21
+
22
+ export const z = zod;
23
+ export const t = initTRPC.context<RouterContext>().create();
24
+ export const router = t.router;
25
+ export const procedure = t.procedure;
26
+
27
+ export const createRouter = () =>
28
+ router({
29
+ getCharacterInventory: procedure
30
+ .use(hasRole('user', t))
31
+ .use(customErrorFormatter(t))
32
+ .input(
33
+ z.object({
34
+ characterId: z.string(),
35
+ })
36
+ )
37
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.getCharacterInventory as any)(input, ctx)),
38
+
39
+ setActiveCharacter: procedure
40
+ .use(hasRole('user', t))
41
+ .use(customErrorFormatter(t))
42
+ .input(
43
+ z.object({
44
+ characterId: z.string(),
45
+ })
46
+ )
47
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.setActiveCharacter as any)(input, ctx)),
48
+
49
+ exchangeCharacterItem: procedure
50
+ .use(hasRole('user', t))
51
+ .use(customErrorFormatter(t))
52
+ .input(
53
+ z.object({
54
+ characterId: z.string(),
55
+ itemId: z.string(),
56
+ })
57
+ )
58
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.exchangeCharacterItem as any)(input, ctx)),
59
+
60
+ getCharacterData: procedure
61
+ .use(hasRole('guest', t))
62
+ .use(customErrorFormatter(t))
63
+ .input(getQueryInput(Character))
64
+ .query(({ input, ctx }) => (ctx.app.service.Character.getCharacterData as any)(input, ctx)),
65
+
66
+ getCharacter: procedure
67
+ .use(hasRole('guest', t))
68
+ .use(customErrorFormatter(t))
69
+ .input(getQueryInput(Character))
70
+ // .output(Character)
71
+ .query(({ input, ctx }) => (ctx.app.service.Character.getCharacter as any)(input, ctx)),
72
+
73
+ getCharacters: procedure
74
+ .use(hasRole('guest', t))
75
+ .use(customErrorFormatter(t))
76
+ .input(getQueryInput(Character))
77
+ // .output(z.array(Character))
78
+ .query(({ input, ctx }) => (ctx.app.service.Character.getCharacters as any)(input, ctx)),
79
+
80
+ saveCharacters: procedure
81
+ .use(hasRole('admin', t))
82
+ .use(customErrorFormatter(t))
83
+ .input(getQueryInput(z.array(Character), { partialData: false }))
84
+ // .output(z.array(Character.pick({ id: true })))
85
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.saveCharacters as any)(input, ctx)),
86
+
87
+ updateCharacter: procedure
88
+ .use(hasRole('admin', t))
89
+ .use(customErrorFormatter(t))
90
+ .input(getQueryInput(Character))
91
+ .output(Character.pick({ id: true }))
92
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.updateCharacter as any)(input, ctx)),
93
+
94
+ getCharacterAbility: procedure
95
+ .use(hasRole('guest', t))
96
+ .use(customErrorFormatter(t))
97
+ .input(getQueryInput(CharacterAbility))
98
+ .output(CharacterAbility)
99
+ .query(({ input, ctx }) => (ctx.app.service.Character.getCharacterAbility as any)(input, ctx)),
100
+
101
+ createCharacterAbility: procedure
102
+ .use(hasRole('admin', t))
103
+ .use(customErrorFormatter(t))
104
+ .input(getQueryInput(CharacterAbility))
105
+ .output(CharacterAbility.pick({ id: true }))
106
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.createCharacterAbility as any)(input, ctx)),
107
+
108
+ updateCharacterAbility: procedure
109
+ .use(hasRole('admin', t))
110
+ .use(customErrorFormatter(t))
111
+ .input(getQueryInput(CharacterAbility))
112
+ .output(CharacterAbility.pick({ id: true }))
113
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.updateCharacterAbility as any)(input, ctx)),
114
+
115
+ getCharacterAttribute: procedure
116
+ .use(hasRole('guest', t))
117
+ .use(customErrorFormatter(t))
118
+ .input(getQueryInput(CharacterAttribute))
119
+ .output(CharacterAttribute)
120
+ .query(({ input, ctx }) => (ctx.app.service.Character.getCharacterAttribute as any)(input, ctx)),
121
+
122
+ createCharacterAttribute: procedure
123
+ .use(hasRole('admin', t))
124
+ .use(customErrorFormatter(t))
125
+ .input(getQueryInput(CharacterAttribute))
126
+ .output(CharacterAttribute.pick({ id: true }))
127
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.createCharacterAttribute as any)(input, ctx)),
128
+
129
+ updateCharacterAttribute: procedure
130
+ .use(hasRole('admin', t))
131
+ .use(customErrorFormatter(t))
132
+ .input(getQueryInput(Character))
133
+ .output(Character.pick({ id: true }))
134
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.updateCharacterAttribute as any)(input, ctx)),
135
+
136
+ getCharacterType: procedure
137
+ .use(hasRole('guest', t))
138
+ .use(customErrorFormatter(t))
139
+ .input(getQueryInput(CharacterType))
140
+ .output(CharacterType)
141
+ .query(({ input, ctx }) => (ctx.app.service.Character.getCharacterType as any)(input, ctx)),
142
+
143
+ createCharacterType: procedure
144
+ .use(hasRole('admin', t))
145
+ .use(customErrorFormatter(t))
146
+ .input(getQueryInput(CharacterType))
147
+ .output(CharacterType.pick({ id: true }))
148
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.createCharacterType as any)(input, ctx)),
149
+
150
+ updateCharacterType: procedure
151
+ .use(hasRole('admin', t))
152
+ .use(customErrorFormatter(t))
153
+ .input(getQueryInput(CharacterType))
154
+ .output(CharacterType.pick({ id: true }))
155
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.updateCharacterType as any)(input, ctx)),
156
+
157
+ getCharacterClass: procedure
158
+ .use(hasRole('guest', t))
159
+ .use(customErrorFormatter(t))
160
+ .input(getQueryInput(CharacterClass))
161
+ .output(CharacterClass)
162
+ .query(({ input, ctx }) => (ctx.app.service.Character.getCharacterClass as any)(input, ctx)),
163
+
164
+ createCharacterClass: procedure
165
+ .use(hasRole('admin', t))
166
+ .use(customErrorFormatter(t))
167
+ .input(getQueryInput(CharacterClass))
168
+ .output(CharacterClass.pick({ id: true }))
169
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.createCharacterClass as any)(input, ctx)),
170
+
171
+ updateCharacterClass: procedure
172
+ .use(hasRole('admin', t))
173
+ .use(customErrorFormatter(t))
174
+ .input(getQueryInput(CharacterClass))
175
+ .output(CharacterClass.pick({ id: true }))
176
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.updateCharacterClass as any)(input, ctx)),
177
+
178
+ getCharacterRace: procedure
179
+ .use(hasRole('guest', t))
180
+ .use(customErrorFormatter(t))
181
+ .input(getQueryInput(Character))
182
+ .output(Character)
183
+ .query(({ input, ctx }) => (ctx.app.service.Character.getCharacterRace as any)(input, ctx)),
184
+
185
+ createCharacterRace: procedure
186
+ .use(hasRole('admin', t))
187
+ .use(customErrorFormatter(t))
188
+ .input(getQueryInput(CharacterRace))
189
+ .output(CharacterRace.pick({ id: true }))
190
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.createCharacterRace as any)(input, ctx)),
191
+
192
+ updateCharacterRace: procedure
193
+ .use(hasRole('admin', t))
194
+ .use(customErrorFormatter(t))
195
+ .input(getQueryInput(CharacterRace))
196
+ .output(CharacterRace.pick({ id: true }))
197
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.updateCharacterRace as any)(input, ctx)),
198
+
199
+ getCharacterGender: procedure
200
+ .use(hasRole('guest', t))
201
+ .use(customErrorFormatter(t))
202
+ .input(getQueryInput(CharacterGender))
203
+ .output(CharacterGender)
204
+ .query(({ input, ctx }) => (ctx.app.service.Character.getCharacterGender as any)(input, ctx)),
205
+
206
+ createCharacterGender: procedure
207
+ .use(hasRole('admin', t))
208
+ .use(customErrorFormatter(t))
209
+ .input(getQueryInput(CharacterGender))
210
+ .output(CharacterGender.pick({ id: true }))
211
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.createCharacterGender as any)(input, ctx)),
212
+
213
+ updateCharacterGender: procedure
214
+ .use(hasRole('admin', t))
215
+ .use(customErrorFormatter(t))
216
+ .input(getQueryInput(Character))
217
+ .output(Character.pick({ id: true }))
218
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.updateCharacterGender as any)(input, ctx)),
219
+
220
+ getCharacterPersonality: procedure
221
+ .use(hasRole('guest', t))
222
+ .use(customErrorFormatter(t))
223
+ .input(getQueryInput(CharacterPersonality))
224
+ .output(CharacterPersonality)
225
+ .query(({ input, ctx }) => (ctx.app.service.Character.getCharacterPersonality as any)(input, ctx)),
226
+
227
+ createCharacterPersonality: procedure
228
+ .use(hasRole('admin', t))
229
+ .use(customErrorFormatter(t))
230
+ .input(getQueryInput(CharacterPersonality))
231
+ .output(CharacterPersonality.pick({ id: true }))
232
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.createCharacterPersonality as any)(input, ctx)),
233
+
234
+ updateCharacterPersonality: procedure
235
+ .use(hasRole('admin', t))
236
+ .use(customErrorFormatter(t))
237
+ .input(getQueryInput(CharacterPersonality))
238
+ .output(CharacterPersonality.pick({ id: true }))
239
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.updateCharacterPersonality as any)(input, ctx)),
240
+
241
+ getCharacterTitle: procedure
242
+ .use(hasRole('guest', t))
243
+ .use(customErrorFormatter(t))
244
+ .input(getQueryInput(CharacterTitle))
245
+ .output(CharacterTitle)
246
+ .query(({ input, ctx }) => (ctx.app.service.Character.getCharacterTitle as any)(input, ctx)),
247
+
248
+ createCharacterTitle: procedure
249
+ .use(hasRole('admin', t))
250
+ .use(customErrorFormatter(t))
251
+ .input(getQueryInput(CharacterTitle))
252
+ .output(CharacterTitle.pick({ id: true }))
253
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.createCharacterTitle as any)(input, ctx)),
254
+
255
+ updateCharacterTitle: procedure
256
+ .use(hasRole('admin', t))
257
+ .use(customErrorFormatter(t))
258
+ .input(getQueryInput(CharacterTitle))
259
+ .output(CharacterTitle.pick({ id: true }))
260
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.updateCharacterTitle as any)(input, ctx)),
261
+
262
+ getCharacterFaction: procedure
263
+ .use(hasRole('guest', t))
264
+ .use(customErrorFormatter(t))
265
+ .input(getQueryInput(CharacterFaction))
266
+ .output(CharacterFaction)
267
+ .query(({ input, ctx }) => (ctx.app.service.Character.getCharacterFaction as any)(input, ctx)),
268
+
269
+ getCharacterFactions: procedure
270
+ .use(hasRole('guest', t))
271
+ .use(customErrorFormatter(t))
272
+ .input(getQueryInput(CharacterFaction))
273
+ .output(z.array(CharacterFaction))
274
+ .query(({ input, ctx }) => (ctx.app.service.Character.getCharacterFactions as any)(input, ctx)),
275
+
276
+ createCharacterFaction: procedure
277
+ .use(hasRole('admin', t))
278
+ .use(customErrorFormatter(t))
279
+ .input(getQueryInput(CharacterFaction))
280
+ .output(CharacterFaction.pick({ id: true }))
281
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.createCharacterFaction as any)(input, ctx)),
282
+
283
+ updateCharacterFaction: procedure
284
+ .use(hasRole('admin', t))
285
+ .use(customErrorFormatter(t))
286
+ .input(getQueryInput(CharacterFaction))
287
+ .output(CharacterFaction.pick({ id: true }))
288
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.updateCharacterFaction as any)(input, ctx)),
289
+
290
+ getCharacterNameChoice: procedure
291
+ .use(hasRole('guest', t))
292
+ .use(customErrorFormatter(t))
293
+ .input(getQueryInput(CharacterNameChoice))
294
+ .output(CharacterNameChoice)
295
+ .query(({ input, ctx }) => (ctx.app.service.Character.getCharacterNameChoice as any)(input, ctx)),
296
+
297
+ createCharacterNameChoice: procedure
298
+ .use(hasRole('admin', t))
299
+ .use(customErrorFormatter(t))
300
+ .input(getQueryInput(CharacterNameChoice))
301
+ .output(CharacterNameChoice.pick({ id: true }))
302
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.createCharacterNameChoice as any)(input, ctx)),
303
+
304
+ updateCharacterNameChoice: procedure
305
+ .use(hasRole('admin', t))
306
+ .use(customErrorFormatter(t))
307
+ .input(getQueryInput(CharacterNameChoice))
308
+ .output(CharacterNameChoice.pick({ id: true }))
309
+ .mutation(({ input, ctx }) => (ctx.app.service.Character.updateCharacterNameChoice as any)(input, ctx)),
310
+ });
311
+
312
+ export type Router = ReturnType<typeof createRouter>;
313
+ export type RouterInput = inferRouterInputs<Router>;
314
+ export type RouterOutput = inferRouterOutputs<Router>;
@@ -0,0 +1,150 @@
1
+ // module/character.schema.ts
2
+
3
+ import { z, ObjectId, Entity } from '../schema';
4
+ import { Item } from '../item/item.schema';
5
+
6
+ export const CharacterEquipment = Entity.merge(
7
+ z.object({
8
+ characterId: ObjectId,
9
+ leftHand: Item.optional(),
10
+ rightHand: Item.optional(),
11
+ head: Item.optional(),
12
+ pet: Item.optional(),
13
+ neck: Item.optional(),
14
+ legs: Item.optional(),
15
+ chest: Item.optional(),
16
+ waist: Item.optional(),
17
+ hands: Item.optional(),
18
+ wrists: Item.optional(),
19
+ shoulders: Item.optional(),
20
+ feet: Item.optional(),
21
+ finger1: Item.optional(),
22
+ finger2: Item.optional(),
23
+ trinket1: Item.optional(),
24
+ trinket2: Item.optional(),
25
+ trinket3: Item.optional(),
26
+ body: Item.optional(),
27
+ companion: Item.optional(),
28
+ mount: Item.optional(),
29
+ })
30
+ );
31
+
32
+ export const CharacterInventory = Entity.merge(
33
+ z.object({
34
+ characterId: ObjectId,
35
+ items: z.array(Item).default([]),
36
+ })
37
+ );
38
+
39
+ // Character schema
40
+ export const Character = Entity.merge(
41
+ z.object({
42
+ profileId: ObjectId.optional(),
43
+ ratingId: ObjectId.optional(),
44
+ classId: ObjectId.optional(),
45
+ raceId: ObjectId.optional(),
46
+ factionId: ObjectId.optional(),
47
+ genderId: ObjectId.optional(),
48
+ guildId: ObjectId.optional(),
49
+ token: z
50
+ .string()
51
+ .min(1)
52
+ .optional(),
53
+ points: z.number().default(0),
54
+ isPrimary: z.boolean().default(false),
55
+ isBoss: z.boolean().default(false),
56
+ isPlayer: z.boolean().default(false),
57
+ equipmentIndex: z.number().default(0),
58
+ equipment: z.array(CharacterEquipment).default([]),
59
+ inventoryIndex: z.number().default(0),
60
+ inventory: z.array(CharacterInventory).default([]),
61
+ energyIds: z.array(ObjectId).optional(),
62
+ areaIds: z.array(ObjectId).optional(),
63
+ typeIds: z.array(ObjectId).optional(),
64
+ itemMaterialIds: z.array(ObjectId).optional(),
65
+ })
66
+ );
67
+
68
+ // CharacterAbility schema
69
+ export const CharacterAbility = Entity.merge(
70
+ z.object({
71
+ // Define fields for CharacterAbility here if needed
72
+ })
73
+ );
74
+
75
+ // CharacterAttribute schema
76
+ export const CharacterAttribute = Entity.merge(
77
+ z.object({
78
+ // Define fields for CharacterAttribute here if needed
79
+ })
80
+ );
81
+
82
+ // CharacterType schema
83
+ export const CharacterType = Entity.merge(
84
+ z.object({
85
+ // Define fields for CharacterType here if needed
86
+ })
87
+ );
88
+
89
+ // CharacterClass schema
90
+ export const CharacterClass = Entity.merge(
91
+ z.object({
92
+ // Define fields for CharacterClass here if needed
93
+ })
94
+ );
95
+
96
+ // CharacterRace schema
97
+ export const CharacterRace = Entity.merge(
98
+ z.object({
99
+ npcs: z.array(ObjectId).optional(),
100
+ })
101
+ );
102
+
103
+ // CharacterGender schema
104
+ export const CharacterGender = Entity.merge(
105
+ z.object({
106
+ // Define fields for CharacterGender here if needed
107
+ })
108
+ );
109
+
110
+ // CharacterPersonality schema
111
+ export const CharacterPersonality = Entity.merge(
112
+ z.object({
113
+ // Define fields for CharacterPersonality here if needed
114
+ })
115
+ );
116
+
117
+ // CharacterTitle schema
118
+ export const CharacterTitle = Entity.merge(
119
+ z.object({
120
+ // Define fields for CharacterTitle here if needed
121
+ })
122
+ );
123
+
124
+ // CharacterFaction schema
125
+ export const CharacterFaction = Entity.merge(
126
+ z.object({
127
+ shortDescription: z.string(),
128
+ // "npcs": [],
129
+ // "areas": [24, 77],
130
+ // "activeFactionConflict": [9], // CharacterFaction list
131
+ // "passiveFactionConflict": [6], // CharacterFaction list
132
+ // "activeGuildConflict": [], // Team
133
+ // "areaConflict": [], // Area list
134
+ // "characters": [] // Character list
135
+ })
136
+ );
137
+
138
+ // CharacterNameChoice schema
139
+ export const CharacterNameChoice = Entity.merge(
140
+ z.object({
141
+ // Define fields for CharacterNameChoice here if needed
142
+ })
143
+ );
144
+
145
+ // CharacterGuild schema
146
+ export const CharacterGuild = Entity.merge(
147
+ z.object({
148
+ // Define fields for CharacterGuild here if needed
149
+ })
150
+ );
@@ -0,0 +1,63 @@
1
+ import { z } from 'zod';
2
+ import * as schema from './character.schema';
3
+ import { Document, Model } from '@arken/node/mongo';
4
+
5
+ export type * from './character.router';
6
+ export type { RouterContext } from '../types';
7
+
8
+ export type Character = z.infer<typeof schema.Character>;
9
+ export type CharacterDocument = Character & Document;
10
+
11
+ export type CharacterEquipment = z.infer<typeof schema.CharacterEquipment>;
12
+ export type CharacterEquipmentDocument = CharacterEquipment & Document;
13
+
14
+ export type CharacterInventory = z.infer<typeof schema.CharacterInventory>;
15
+ export type CharacterInventoryDocument = CharacterInventory & Document;
16
+
17
+ export type CharacterAbility = z.infer<typeof schema.CharacterAbility>;
18
+ export type CharacterAbilityDocument = CharacterAbility & Document;
19
+
20
+ export type CharacterAttribute = z.infer<typeof schema.CharacterAttribute>;
21
+ export type CharacterAttributeDocument = CharacterAttribute & Document;
22
+
23
+ export type CharacterClass = z.infer<typeof schema.CharacterClass>;
24
+ export type CharacterClassDocument = CharacterClass & Document;
25
+
26
+ export type CharacterFaction = z.infer<typeof schema.CharacterFaction>;
27
+ export type CharacterFactionDocument = CharacterFaction & Document;
28
+
29
+ export type CharacterGender = z.infer<typeof schema.CharacterGender>;
30
+ export type CharacterGenderDocument = CharacterGender & Document;
31
+
32
+ export type CharacterNameChoice = z.infer<typeof schema.CharacterNameChoice>;
33
+ export type CharacterNameChoiceDocument = CharacterNameChoice & Document;
34
+
35
+ export type CharacterPersonality = z.infer<typeof schema.CharacterPersonality>;
36
+ export type CharacterPersonalityDocument = CharacterPersonality & Document;
37
+
38
+ export type CharacterRace = z.infer<typeof schema.CharacterRace>;
39
+ export type CharacterRaceDocument = CharacterRace & Document;
40
+
41
+ export type CharacterTitle = z.infer<typeof schema.CharacterTitle>;
42
+ export type CharacterTitleDocument = CharacterTitle & Document;
43
+
44
+ export type CharacterType = z.infer<typeof schema.CharacterType>;
45
+ export type CharacterTypeDocument = CharacterType & Document;
46
+
47
+ export type CharacterGuild = z.infer<typeof schema.CharacterGuild>;
48
+ export type CharacterGuildDocument = CharacterGuild & Document;
49
+
50
+ export type Mappings = {
51
+ Character: Model<CharacterDocument>;
52
+ CharacterAbility: Model<CharacterAbilityDocument>;
53
+ CharacterAttribute: Model<CharacterAttributeDocument>;
54
+ CharacterClass: Model<CharacterClassDocument>;
55
+ CharacterFaction: Model<CharacterFactionDocument>;
56
+ CharacterGender: Model<CharacterGenderDocument>;
57
+ CharacterNameChoice: Model<CharacterNameChoiceDocument>;
58
+ CharacterPersonality: Model<CharacterPersonalityDocument>;
59
+ CharacterRace: Model<CharacterRaceDocument>;
60
+ CharacterTitle: Model<CharacterTitleDocument>;
61
+ CharacterType: Model<CharacterTypeDocument>;
62
+ CharacterGuild: Model<CharacterGuildDocument>;
63
+ };