@deepintel-ltd/farmpro-contracts 1.7.6 → 1.7.9
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.
- package/dist/index.d.ts +11 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/routes/crop-profile.routes.d.ts +556 -0
- package/dist/routes/crop-profile.routes.d.ts.map +1 -0
- package/dist/routes/crop-profile.routes.js +55 -0
- package/dist/routes/geofences.routes.d.ts +1913 -0
- package/dist/routes/geofences.routes.d.ts.map +1 -0
- package/dist/routes/geofences.routes.js +105 -0
- package/dist/routes/index.d.ts +15 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +10 -0
- package/dist/routes/livestock-map.routes.d.ts +1319 -0
- package/dist/routes/livestock-map.routes.d.ts.map +1 -0
- package/dist/routes/livestock-map.routes.js +83 -0
- package/dist/routes/measurements.routes.d.ts +1081 -0
- package/dist/routes/measurements.routes.d.ts.map +1 -0
- package/dist/routes/measurements.routes.js +69 -0
- package/dist/routes/monitoring-visualization.routes.d.ts +1637 -0
- package/dist/routes/monitoring-visualization.routes.d.ts.map +1 -1
- package/dist/routes/monitoring-visualization.routes.js +153 -0
- package/dist/routes/prescription-maps.routes.d.ts +3092 -0
- package/dist/routes/prescription-maps.routes.d.ts.map +1 -0
- package/dist/routes/prescription-maps.routes.js +143 -0
- package/dist/schemas/crop-profile.schemas.d.ts +724 -0
- package/dist/schemas/crop-profile.schemas.d.ts.map +1 -0
- package/dist/schemas/crop-profile.schemas.js +84 -0
- package/dist/schemas/geofences.schemas.d.ts +358 -0
- package/dist/schemas/geofences.schemas.d.ts.map +1 -0
- package/dist/schemas/geofences.schemas.js +44 -0
- package/dist/schemas/livestock-map.schemas.d.ts +328 -0
- package/dist/schemas/livestock-map.schemas.d.ts.map +1 -0
- package/dist/schemas/livestock-map.schemas.js +52 -0
- package/dist/schemas/measurements.schemas.d.ts +234 -0
- package/dist/schemas/measurements.schemas.d.ts.map +1 -0
- package/dist/schemas/measurements.schemas.js +57 -0
- package/dist/schemas/monitoring-visualization.schemas.d.ts +1703 -0
- package/dist/schemas/monitoring-visualization.schemas.d.ts.map +1 -1
- package/dist/schemas/monitoring-visualization.schemas.js +338 -0
- package/dist/schemas/prescription-maps.schemas.d.ts +974 -0
- package/dist/schemas/prescription-maps.schemas.d.ts.map +1 -0
- package/dist/schemas/prescription-maps.schemas.js +132 -0
- package/package.json +1 -1
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const livestockLocationSchema: z.ZodObject<{
|
|
3
|
+
id: z.ZodString;
|
|
4
|
+
livestockId: z.ZodOptional<z.ZodString>;
|
|
5
|
+
groupId: z.ZodOptional<z.ZodString>;
|
|
6
|
+
coordinates: z.ZodObject<{
|
|
7
|
+
lat: z.ZodNumber;
|
|
8
|
+
lng: z.ZodNumber;
|
|
9
|
+
accuracy: z.ZodOptional<z.ZodNumber>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
lat: number;
|
|
12
|
+
lng: number;
|
|
13
|
+
accuracy?: number | undefined;
|
|
14
|
+
}, {
|
|
15
|
+
lat: number;
|
|
16
|
+
lng: number;
|
|
17
|
+
accuracy?: number | undefined;
|
|
18
|
+
}>;
|
|
19
|
+
timestamp: z.ZodString;
|
|
20
|
+
source: z.ZodEnum<["gps_collar", "manual", "rfid_reader", "app"]>;
|
|
21
|
+
batteryLevel: z.ZodOptional<z.ZodNumber>;
|
|
22
|
+
}, "strip", z.ZodTypeAny, {
|
|
23
|
+
coordinates: {
|
|
24
|
+
lat: number;
|
|
25
|
+
lng: number;
|
|
26
|
+
accuracy?: number | undefined;
|
|
27
|
+
};
|
|
28
|
+
id: string;
|
|
29
|
+
source: "manual" | "gps_collar" | "rfid_reader" | "app";
|
|
30
|
+
timestamp: string;
|
|
31
|
+
batteryLevel?: number | undefined;
|
|
32
|
+
groupId?: string | undefined;
|
|
33
|
+
livestockId?: string | undefined;
|
|
34
|
+
}, {
|
|
35
|
+
coordinates: {
|
|
36
|
+
lat: number;
|
|
37
|
+
lng: number;
|
|
38
|
+
accuracy?: number | undefined;
|
|
39
|
+
};
|
|
40
|
+
id: string;
|
|
41
|
+
source: "manual" | "gps_collar" | "rfid_reader" | "app";
|
|
42
|
+
timestamp: string;
|
|
43
|
+
batteryLevel?: number | undefined;
|
|
44
|
+
groupId?: string | undefined;
|
|
45
|
+
livestockId?: string | undefined;
|
|
46
|
+
}>;
|
|
47
|
+
export declare const movementTrailPointSchema: z.ZodObject<{
|
|
48
|
+
lat: z.ZodNumber;
|
|
49
|
+
lng: z.ZodNumber;
|
|
50
|
+
timestamp: z.ZodString;
|
|
51
|
+
}, "strip", z.ZodTypeAny, {
|
|
52
|
+
timestamp: string;
|
|
53
|
+
lat: number;
|
|
54
|
+
lng: number;
|
|
55
|
+
}, {
|
|
56
|
+
timestamp: string;
|
|
57
|
+
lat: number;
|
|
58
|
+
lng: number;
|
|
59
|
+
}>;
|
|
60
|
+
export declare const livestockMovementTrailSchema: z.ZodObject<{
|
|
61
|
+
livestockId: z.ZodString;
|
|
62
|
+
points: z.ZodArray<z.ZodObject<{
|
|
63
|
+
lat: z.ZodNumber;
|
|
64
|
+
lng: z.ZodNumber;
|
|
65
|
+
timestamp: z.ZodString;
|
|
66
|
+
}, "strip", z.ZodTypeAny, {
|
|
67
|
+
timestamp: string;
|
|
68
|
+
lat: number;
|
|
69
|
+
lng: number;
|
|
70
|
+
}, {
|
|
71
|
+
timestamp: string;
|
|
72
|
+
lat: number;
|
|
73
|
+
lng: number;
|
|
74
|
+
}>, "many">;
|
|
75
|
+
dateRange: z.ZodObject<{
|
|
76
|
+
start: z.ZodString;
|
|
77
|
+
end: z.ZodString;
|
|
78
|
+
}, "strip", z.ZodTypeAny, {
|
|
79
|
+
start: string;
|
|
80
|
+
end: string;
|
|
81
|
+
}, {
|
|
82
|
+
start: string;
|
|
83
|
+
end: string;
|
|
84
|
+
}>;
|
|
85
|
+
}, "strip", z.ZodTypeAny, {
|
|
86
|
+
dateRange: {
|
|
87
|
+
start: string;
|
|
88
|
+
end: string;
|
|
89
|
+
};
|
|
90
|
+
livestockId: string;
|
|
91
|
+
points: {
|
|
92
|
+
timestamp: string;
|
|
93
|
+
lat: number;
|
|
94
|
+
lng: number;
|
|
95
|
+
}[];
|
|
96
|
+
}, {
|
|
97
|
+
dateRange: {
|
|
98
|
+
start: string;
|
|
99
|
+
end: string;
|
|
100
|
+
};
|
|
101
|
+
livestockId: string;
|
|
102
|
+
points: {
|
|
103
|
+
timestamp: string;
|
|
104
|
+
lat: number;
|
|
105
|
+
lng: number;
|
|
106
|
+
}[];
|
|
107
|
+
}>;
|
|
108
|
+
export declare const heatmapPointSchema: z.ZodObject<{
|
|
109
|
+
lat: z.ZodNumber;
|
|
110
|
+
lng: z.ZodNumber;
|
|
111
|
+
intensity: z.ZodNumber;
|
|
112
|
+
}, "strip", z.ZodTypeAny, {
|
|
113
|
+
lat: number;
|
|
114
|
+
lng: number;
|
|
115
|
+
intensity: number;
|
|
116
|
+
}, {
|
|
117
|
+
lat: number;
|
|
118
|
+
lng: number;
|
|
119
|
+
intensity: number;
|
|
120
|
+
}>;
|
|
121
|
+
export declare const grazingZoneSchema: z.ZodObject<{
|
|
122
|
+
id: z.ZodString;
|
|
123
|
+
name: z.ZodString;
|
|
124
|
+
geometry: z.ZodObject<{
|
|
125
|
+
type: z.ZodEnum<["Polygon", "MultiPolygon", "Point", "LineString"]>;
|
|
126
|
+
coordinates: z.ZodUnion<[z.ZodArray<z.ZodArray<z.ZodArray<z.ZodNumber, "many">, "many">, "many">, z.ZodArray<z.ZodArray<z.ZodArray<z.ZodArray<z.ZodNumber, "many">, "many">, "many">, "many">, z.ZodArray<z.ZodNumber, "many">, z.ZodArray<z.ZodArray<z.ZodNumber, "many">, "many">]>;
|
|
127
|
+
}, "strip", z.ZodTypeAny, {
|
|
128
|
+
type: "Polygon" | "MultiPolygon" | "Point" | "LineString";
|
|
129
|
+
coordinates: number[] | number[][] | number[][][] | number[][][][];
|
|
130
|
+
}, {
|
|
131
|
+
type: "Polygon" | "MultiPolygon" | "Point" | "LineString";
|
|
132
|
+
coordinates: number[] | number[][] | number[][][] | number[][][][];
|
|
133
|
+
}>;
|
|
134
|
+
type: z.ZodEnum<["paddock", "shelter", "water_source", "feeding_area"]>;
|
|
135
|
+
currentOccupancy: z.ZodOptional<z.ZodNumber>;
|
|
136
|
+
capacity: z.ZodOptional<z.ZodNumber>;
|
|
137
|
+
}, "strip", z.ZodTypeAny, {
|
|
138
|
+
type: "paddock" | "shelter" | "water_source" | "feeding_area";
|
|
139
|
+
id: string;
|
|
140
|
+
name: string;
|
|
141
|
+
geometry: {
|
|
142
|
+
type: "Polygon" | "MultiPolygon" | "Point" | "LineString";
|
|
143
|
+
coordinates: number[] | number[][] | number[][][] | number[][][][];
|
|
144
|
+
};
|
|
145
|
+
currentOccupancy?: number | undefined;
|
|
146
|
+
capacity?: number | undefined;
|
|
147
|
+
}, {
|
|
148
|
+
type: "paddock" | "shelter" | "water_source" | "feeding_area";
|
|
149
|
+
id: string;
|
|
150
|
+
name: string;
|
|
151
|
+
geometry: {
|
|
152
|
+
type: "Polygon" | "MultiPolygon" | "Point" | "LineString";
|
|
153
|
+
coordinates: number[] | number[][] | number[][][] | number[][][][];
|
|
154
|
+
};
|
|
155
|
+
currentOccupancy?: number | undefined;
|
|
156
|
+
capacity?: number | undefined;
|
|
157
|
+
}>;
|
|
158
|
+
export declare const updateLocationBodySchema: z.ZodObject<{
|
|
159
|
+
coordinates: z.ZodObject<{
|
|
160
|
+
lat: z.ZodNumber;
|
|
161
|
+
lng: z.ZodNumber;
|
|
162
|
+
}, "strip", z.ZodTypeAny, {
|
|
163
|
+
lat: number;
|
|
164
|
+
lng: number;
|
|
165
|
+
}, {
|
|
166
|
+
lat: number;
|
|
167
|
+
lng: number;
|
|
168
|
+
}>;
|
|
169
|
+
}, "strip", z.ZodTypeAny, {
|
|
170
|
+
coordinates: {
|
|
171
|
+
lat: number;
|
|
172
|
+
lng: number;
|
|
173
|
+
};
|
|
174
|
+
}, {
|
|
175
|
+
coordinates: {
|
|
176
|
+
lat: number;
|
|
177
|
+
lng: number;
|
|
178
|
+
};
|
|
179
|
+
}>;
|
|
180
|
+
export declare const livestockLocationListResponseSchema: z.ZodArray<z.ZodObject<{
|
|
181
|
+
id: z.ZodString;
|
|
182
|
+
livestockId: z.ZodOptional<z.ZodString>;
|
|
183
|
+
groupId: z.ZodOptional<z.ZodString>;
|
|
184
|
+
coordinates: z.ZodObject<{
|
|
185
|
+
lat: z.ZodNumber;
|
|
186
|
+
lng: z.ZodNumber;
|
|
187
|
+
accuracy: z.ZodOptional<z.ZodNumber>;
|
|
188
|
+
}, "strip", z.ZodTypeAny, {
|
|
189
|
+
lat: number;
|
|
190
|
+
lng: number;
|
|
191
|
+
accuracy?: number | undefined;
|
|
192
|
+
}, {
|
|
193
|
+
lat: number;
|
|
194
|
+
lng: number;
|
|
195
|
+
accuracy?: number | undefined;
|
|
196
|
+
}>;
|
|
197
|
+
timestamp: z.ZodString;
|
|
198
|
+
source: z.ZodEnum<["gps_collar", "manual", "rfid_reader", "app"]>;
|
|
199
|
+
batteryLevel: z.ZodOptional<z.ZodNumber>;
|
|
200
|
+
}, "strip", z.ZodTypeAny, {
|
|
201
|
+
coordinates: {
|
|
202
|
+
lat: number;
|
|
203
|
+
lng: number;
|
|
204
|
+
accuracy?: number | undefined;
|
|
205
|
+
};
|
|
206
|
+
id: string;
|
|
207
|
+
source: "manual" | "gps_collar" | "rfid_reader" | "app";
|
|
208
|
+
timestamp: string;
|
|
209
|
+
batteryLevel?: number | undefined;
|
|
210
|
+
groupId?: string | undefined;
|
|
211
|
+
livestockId?: string | undefined;
|
|
212
|
+
}, {
|
|
213
|
+
coordinates: {
|
|
214
|
+
lat: number;
|
|
215
|
+
lng: number;
|
|
216
|
+
accuracy?: number | undefined;
|
|
217
|
+
};
|
|
218
|
+
id: string;
|
|
219
|
+
source: "manual" | "gps_collar" | "rfid_reader" | "app";
|
|
220
|
+
timestamp: string;
|
|
221
|
+
batteryLevel?: number | undefined;
|
|
222
|
+
groupId?: string | undefined;
|
|
223
|
+
livestockId?: string | undefined;
|
|
224
|
+
}>, "many">;
|
|
225
|
+
export declare const movementTrailListResponseSchema: z.ZodArray<z.ZodObject<{
|
|
226
|
+
livestockId: z.ZodString;
|
|
227
|
+
points: z.ZodArray<z.ZodObject<{
|
|
228
|
+
lat: z.ZodNumber;
|
|
229
|
+
lng: z.ZodNumber;
|
|
230
|
+
timestamp: z.ZodString;
|
|
231
|
+
}, "strip", z.ZodTypeAny, {
|
|
232
|
+
timestamp: string;
|
|
233
|
+
lat: number;
|
|
234
|
+
lng: number;
|
|
235
|
+
}, {
|
|
236
|
+
timestamp: string;
|
|
237
|
+
lat: number;
|
|
238
|
+
lng: number;
|
|
239
|
+
}>, "many">;
|
|
240
|
+
dateRange: z.ZodObject<{
|
|
241
|
+
start: z.ZodString;
|
|
242
|
+
end: z.ZodString;
|
|
243
|
+
}, "strip", z.ZodTypeAny, {
|
|
244
|
+
start: string;
|
|
245
|
+
end: string;
|
|
246
|
+
}, {
|
|
247
|
+
start: string;
|
|
248
|
+
end: string;
|
|
249
|
+
}>;
|
|
250
|
+
}, "strip", z.ZodTypeAny, {
|
|
251
|
+
dateRange: {
|
|
252
|
+
start: string;
|
|
253
|
+
end: string;
|
|
254
|
+
};
|
|
255
|
+
livestockId: string;
|
|
256
|
+
points: {
|
|
257
|
+
timestamp: string;
|
|
258
|
+
lat: number;
|
|
259
|
+
lng: number;
|
|
260
|
+
}[];
|
|
261
|
+
}, {
|
|
262
|
+
dateRange: {
|
|
263
|
+
start: string;
|
|
264
|
+
end: string;
|
|
265
|
+
};
|
|
266
|
+
livestockId: string;
|
|
267
|
+
points: {
|
|
268
|
+
timestamp: string;
|
|
269
|
+
lat: number;
|
|
270
|
+
lng: number;
|
|
271
|
+
}[];
|
|
272
|
+
}>, "many">;
|
|
273
|
+
export declare const heatmapResponseSchema: z.ZodArray<z.ZodObject<{
|
|
274
|
+
lat: z.ZodNumber;
|
|
275
|
+
lng: z.ZodNumber;
|
|
276
|
+
intensity: z.ZodNumber;
|
|
277
|
+
}, "strip", z.ZodTypeAny, {
|
|
278
|
+
lat: number;
|
|
279
|
+
lng: number;
|
|
280
|
+
intensity: number;
|
|
281
|
+
}, {
|
|
282
|
+
lat: number;
|
|
283
|
+
lng: number;
|
|
284
|
+
intensity: number;
|
|
285
|
+
}>, "many">;
|
|
286
|
+
export declare const grazingZoneListResponseSchema: z.ZodArray<z.ZodObject<{
|
|
287
|
+
id: z.ZodString;
|
|
288
|
+
name: z.ZodString;
|
|
289
|
+
geometry: z.ZodObject<{
|
|
290
|
+
type: z.ZodEnum<["Polygon", "MultiPolygon", "Point", "LineString"]>;
|
|
291
|
+
coordinates: z.ZodUnion<[z.ZodArray<z.ZodArray<z.ZodArray<z.ZodNumber, "many">, "many">, "many">, z.ZodArray<z.ZodArray<z.ZodArray<z.ZodArray<z.ZodNumber, "many">, "many">, "many">, "many">, z.ZodArray<z.ZodNumber, "many">, z.ZodArray<z.ZodArray<z.ZodNumber, "many">, "many">]>;
|
|
292
|
+
}, "strip", z.ZodTypeAny, {
|
|
293
|
+
type: "Polygon" | "MultiPolygon" | "Point" | "LineString";
|
|
294
|
+
coordinates: number[] | number[][] | number[][][] | number[][][][];
|
|
295
|
+
}, {
|
|
296
|
+
type: "Polygon" | "MultiPolygon" | "Point" | "LineString";
|
|
297
|
+
coordinates: number[] | number[][] | number[][][] | number[][][][];
|
|
298
|
+
}>;
|
|
299
|
+
type: z.ZodEnum<["paddock", "shelter", "water_source", "feeding_area"]>;
|
|
300
|
+
currentOccupancy: z.ZodOptional<z.ZodNumber>;
|
|
301
|
+
capacity: z.ZodOptional<z.ZodNumber>;
|
|
302
|
+
}, "strip", z.ZodTypeAny, {
|
|
303
|
+
type: "paddock" | "shelter" | "water_source" | "feeding_area";
|
|
304
|
+
id: string;
|
|
305
|
+
name: string;
|
|
306
|
+
geometry: {
|
|
307
|
+
type: "Polygon" | "MultiPolygon" | "Point" | "LineString";
|
|
308
|
+
coordinates: number[] | number[][] | number[][][] | number[][][][];
|
|
309
|
+
};
|
|
310
|
+
currentOccupancy?: number | undefined;
|
|
311
|
+
capacity?: number | undefined;
|
|
312
|
+
}, {
|
|
313
|
+
type: "paddock" | "shelter" | "water_source" | "feeding_area";
|
|
314
|
+
id: string;
|
|
315
|
+
name: string;
|
|
316
|
+
geometry: {
|
|
317
|
+
type: "Polygon" | "MultiPolygon" | "Point" | "LineString";
|
|
318
|
+
coordinates: number[] | number[][] | number[][][] | number[][][][];
|
|
319
|
+
};
|
|
320
|
+
currentOccupancy?: number | undefined;
|
|
321
|
+
capacity?: number | undefined;
|
|
322
|
+
}>, "many">;
|
|
323
|
+
export type LivestockLocationResponse = z.infer<typeof livestockLocationSchema>;
|
|
324
|
+
export type LivestockMovementTrailResponse = z.infer<typeof livestockMovementTrailSchema>;
|
|
325
|
+
export type HeatmapPointResponse = z.infer<typeof heatmapPointSchema>;
|
|
326
|
+
export type GrazingZoneResponse = z.infer<typeof grazingZoneSchema>;
|
|
327
|
+
export type UpdateLocationBody = z.infer<typeof updateLocationBodySchema>;
|
|
328
|
+
//# sourceMappingURL=livestock-map.schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"livestock-map.schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/livestock-map.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYlC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;EAInC,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOvC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO5B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;EAKnC,CAAC;AAEH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAAmC,CAAC;AACpF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAAwC,CAAC;AACrF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;WAA8B,CAAC;AACjE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAA6B,CAAC;AAExE,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAChF,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAC1F,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { geoJSONGeometrySchema } from './common.schemas';
|
|
3
|
+
const locationSourceSchema = z.enum(['gps_collar', 'manual', 'rfid_reader', 'app']);
|
|
4
|
+
export const livestockLocationSchema = z.object({
|
|
5
|
+
id: z.string().uuid(),
|
|
6
|
+
livestockId: z.string().uuid().optional(),
|
|
7
|
+
groupId: z.string().uuid().optional(),
|
|
8
|
+
coordinates: z.object({
|
|
9
|
+
lat: z.number(),
|
|
10
|
+
lng: z.number(),
|
|
11
|
+
accuracy: z.number().optional(),
|
|
12
|
+
}),
|
|
13
|
+
timestamp: z.string().datetime(),
|
|
14
|
+
source: locationSourceSchema,
|
|
15
|
+
batteryLevel: z.number().min(0).max(100).optional(),
|
|
16
|
+
});
|
|
17
|
+
export const movementTrailPointSchema = z.object({
|
|
18
|
+
lat: z.number(),
|
|
19
|
+
lng: z.number(),
|
|
20
|
+
timestamp: z.string().datetime(),
|
|
21
|
+
});
|
|
22
|
+
export const livestockMovementTrailSchema = z.object({
|
|
23
|
+
livestockId: z.string().uuid(),
|
|
24
|
+
points: z.array(movementTrailPointSchema),
|
|
25
|
+
dateRange: z.object({
|
|
26
|
+
start: z.string().datetime(),
|
|
27
|
+
end: z.string().datetime(),
|
|
28
|
+
}),
|
|
29
|
+
});
|
|
30
|
+
export const heatmapPointSchema = z.object({
|
|
31
|
+
lat: z.number(),
|
|
32
|
+
lng: z.number(),
|
|
33
|
+
intensity: z.number(),
|
|
34
|
+
});
|
|
35
|
+
export const grazingZoneSchema = z.object({
|
|
36
|
+
id: z.string().uuid(),
|
|
37
|
+
name: z.string(),
|
|
38
|
+
geometry: geoJSONGeometrySchema,
|
|
39
|
+
type: z.enum(['paddock', 'shelter', 'water_source', 'feeding_area']),
|
|
40
|
+
currentOccupancy: z.number().optional(),
|
|
41
|
+
capacity: z.number().optional(),
|
|
42
|
+
});
|
|
43
|
+
export const updateLocationBodySchema = z.object({
|
|
44
|
+
coordinates: z.object({
|
|
45
|
+
lat: z.number(),
|
|
46
|
+
lng: z.number(),
|
|
47
|
+
}),
|
|
48
|
+
});
|
|
49
|
+
export const livestockLocationListResponseSchema = z.array(livestockLocationSchema);
|
|
50
|
+
export const movementTrailListResponseSchema = z.array(livestockMovementTrailSchema);
|
|
51
|
+
export const heatmapResponseSchema = z.array(heatmapPointSchema);
|
|
52
|
+
export const grazingZoneListResponseSchema = z.array(grazingZoneSchema);
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Measurement type enum matching Prisma MeasurementType
|
|
4
|
+
*/
|
|
5
|
+
export declare const measurementTypeSchema: z.ZodEnum<["DISTANCE", "AREA", "PERIMETER", "RADIUS"]>;
|
|
6
|
+
/**
|
|
7
|
+
* Segment schema for multi-point measurements
|
|
8
|
+
*/
|
|
9
|
+
export declare const measurementSegmentSchema: z.ZodObject<{
|
|
10
|
+
distance: z.ZodNumber;
|
|
11
|
+
bearing: z.ZodOptional<z.ZodNumber>;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
distance: number;
|
|
14
|
+
bearing?: number | undefined;
|
|
15
|
+
}, {
|
|
16
|
+
distance: number;
|
|
17
|
+
bearing?: number | undefined;
|
|
18
|
+
}>;
|
|
19
|
+
/**
|
|
20
|
+
* Coordinate point schema [lat, lng]
|
|
21
|
+
*/
|
|
22
|
+
export declare const coordinatePointSchema: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
23
|
+
/**
|
|
24
|
+
* Measurement response schema
|
|
25
|
+
*/
|
|
26
|
+
export declare const measurementSchema: z.ZodObject<{
|
|
27
|
+
id: z.ZodString;
|
|
28
|
+
fieldId: z.ZodString;
|
|
29
|
+
farmId: z.ZodString;
|
|
30
|
+
type: z.ZodEnum<["DISTANCE", "AREA", "PERIMETER", "RADIUS"]>;
|
|
31
|
+
label: z.ZodNullable<z.ZodString>;
|
|
32
|
+
points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">;
|
|
33
|
+
result: z.ZodNumber;
|
|
34
|
+
unit: z.ZodString;
|
|
35
|
+
segments: z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
36
|
+
distance: z.ZodNumber;
|
|
37
|
+
bearing: z.ZodOptional<z.ZodNumber>;
|
|
38
|
+
}, "strip", z.ZodTypeAny, {
|
|
39
|
+
distance: number;
|
|
40
|
+
bearing?: number | undefined;
|
|
41
|
+
}, {
|
|
42
|
+
distance: number;
|
|
43
|
+
bearing?: number | undefined;
|
|
44
|
+
}>, "many">>;
|
|
45
|
+
createdBy: z.ZodNullable<z.ZodString>;
|
|
46
|
+
createdAt: z.ZodString;
|
|
47
|
+
updatedAt: z.ZodString;
|
|
48
|
+
}, "strip", z.ZodTypeAny, {
|
|
49
|
+
type: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS";
|
|
50
|
+
id: string;
|
|
51
|
+
createdAt: string;
|
|
52
|
+
updatedAt: string;
|
|
53
|
+
farmId: string;
|
|
54
|
+
fieldId: string;
|
|
55
|
+
unit: string;
|
|
56
|
+
createdBy: string | null;
|
|
57
|
+
result: number;
|
|
58
|
+
label: string | null;
|
|
59
|
+
points: [number, number][];
|
|
60
|
+
segments: {
|
|
61
|
+
distance: number;
|
|
62
|
+
bearing?: number | undefined;
|
|
63
|
+
}[] | null;
|
|
64
|
+
}, {
|
|
65
|
+
type: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS";
|
|
66
|
+
id: string;
|
|
67
|
+
createdAt: string;
|
|
68
|
+
updatedAt: string;
|
|
69
|
+
farmId: string;
|
|
70
|
+
fieldId: string;
|
|
71
|
+
unit: string;
|
|
72
|
+
createdBy: string | null;
|
|
73
|
+
result: number;
|
|
74
|
+
label: string | null;
|
|
75
|
+
points: [number, number][];
|
|
76
|
+
segments: {
|
|
77
|
+
distance: number;
|
|
78
|
+
bearing?: number | undefined;
|
|
79
|
+
}[] | null;
|
|
80
|
+
}>;
|
|
81
|
+
/**
|
|
82
|
+
* Create measurement request body schema
|
|
83
|
+
*/
|
|
84
|
+
export declare const createMeasurementBodySchema: z.ZodObject<{
|
|
85
|
+
type: z.ZodEnum<["DISTANCE", "AREA", "PERIMETER", "RADIUS"]>;
|
|
86
|
+
label: z.ZodOptional<z.ZodString>;
|
|
87
|
+
points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">;
|
|
88
|
+
result: z.ZodNumber;
|
|
89
|
+
unit: z.ZodString;
|
|
90
|
+
}, "strip", z.ZodTypeAny, {
|
|
91
|
+
type: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS";
|
|
92
|
+
unit: string;
|
|
93
|
+
result: number;
|
|
94
|
+
points: [number, number][];
|
|
95
|
+
label?: string | undefined;
|
|
96
|
+
}, {
|
|
97
|
+
type: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS";
|
|
98
|
+
unit: string;
|
|
99
|
+
result: number;
|
|
100
|
+
points: [number, number][];
|
|
101
|
+
label?: string | undefined;
|
|
102
|
+
}>;
|
|
103
|
+
/**
|
|
104
|
+
* Query schema for filtering measurements by type
|
|
105
|
+
*/
|
|
106
|
+
export declare const measurementListQuerySchema: z.ZodObject<{
|
|
107
|
+
type: z.ZodOptional<z.ZodEnum<["DISTANCE", "AREA", "PERIMETER", "RADIUS"]>>;
|
|
108
|
+
}, "strip", z.ZodTypeAny, {
|
|
109
|
+
type?: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS" | undefined;
|
|
110
|
+
}, {
|
|
111
|
+
type?: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS" | undefined;
|
|
112
|
+
}>;
|
|
113
|
+
/**
|
|
114
|
+
* List response schema
|
|
115
|
+
*/
|
|
116
|
+
export declare const measurementListResponseSchema: z.ZodArray<z.ZodObject<{
|
|
117
|
+
id: z.ZodString;
|
|
118
|
+
fieldId: z.ZodString;
|
|
119
|
+
farmId: z.ZodString;
|
|
120
|
+
type: z.ZodEnum<["DISTANCE", "AREA", "PERIMETER", "RADIUS"]>;
|
|
121
|
+
label: z.ZodNullable<z.ZodString>;
|
|
122
|
+
points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">;
|
|
123
|
+
result: z.ZodNumber;
|
|
124
|
+
unit: z.ZodString;
|
|
125
|
+
segments: z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
126
|
+
distance: z.ZodNumber;
|
|
127
|
+
bearing: z.ZodOptional<z.ZodNumber>;
|
|
128
|
+
}, "strip", z.ZodTypeAny, {
|
|
129
|
+
distance: number;
|
|
130
|
+
bearing?: number | undefined;
|
|
131
|
+
}, {
|
|
132
|
+
distance: number;
|
|
133
|
+
bearing?: number | undefined;
|
|
134
|
+
}>, "many">>;
|
|
135
|
+
createdBy: z.ZodNullable<z.ZodString>;
|
|
136
|
+
createdAt: z.ZodString;
|
|
137
|
+
updatedAt: z.ZodString;
|
|
138
|
+
}, "strip", z.ZodTypeAny, {
|
|
139
|
+
type: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS";
|
|
140
|
+
id: string;
|
|
141
|
+
createdAt: string;
|
|
142
|
+
updatedAt: string;
|
|
143
|
+
farmId: string;
|
|
144
|
+
fieldId: string;
|
|
145
|
+
unit: string;
|
|
146
|
+
createdBy: string | null;
|
|
147
|
+
result: number;
|
|
148
|
+
label: string | null;
|
|
149
|
+
points: [number, number][];
|
|
150
|
+
segments: {
|
|
151
|
+
distance: number;
|
|
152
|
+
bearing?: number | undefined;
|
|
153
|
+
}[] | null;
|
|
154
|
+
}, {
|
|
155
|
+
type: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS";
|
|
156
|
+
id: string;
|
|
157
|
+
createdAt: string;
|
|
158
|
+
updatedAt: string;
|
|
159
|
+
farmId: string;
|
|
160
|
+
fieldId: string;
|
|
161
|
+
unit: string;
|
|
162
|
+
createdBy: string | null;
|
|
163
|
+
result: number;
|
|
164
|
+
label: string | null;
|
|
165
|
+
points: [number, number][];
|
|
166
|
+
segments: {
|
|
167
|
+
distance: number;
|
|
168
|
+
bearing?: number | undefined;
|
|
169
|
+
}[] | null;
|
|
170
|
+
}>, "many">;
|
|
171
|
+
/**
|
|
172
|
+
* Single measurement response schema
|
|
173
|
+
*/
|
|
174
|
+
export declare const measurementSingleResponseSchema: z.ZodObject<{
|
|
175
|
+
id: z.ZodString;
|
|
176
|
+
fieldId: z.ZodString;
|
|
177
|
+
farmId: z.ZodString;
|
|
178
|
+
type: z.ZodEnum<["DISTANCE", "AREA", "PERIMETER", "RADIUS"]>;
|
|
179
|
+
label: z.ZodNullable<z.ZodString>;
|
|
180
|
+
points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">;
|
|
181
|
+
result: z.ZodNumber;
|
|
182
|
+
unit: z.ZodString;
|
|
183
|
+
segments: z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
184
|
+
distance: z.ZodNumber;
|
|
185
|
+
bearing: z.ZodOptional<z.ZodNumber>;
|
|
186
|
+
}, "strip", z.ZodTypeAny, {
|
|
187
|
+
distance: number;
|
|
188
|
+
bearing?: number | undefined;
|
|
189
|
+
}, {
|
|
190
|
+
distance: number;
|
|
191
|
+
bearing?: number | undefined;
|
|
192
|
+
}>, "many">>;
|
|
193
|
+
createdBy: z.ZodNullable<z.ZodString>;
|
|
194
|
+
createdAt: z.ZodString;
|
|
195
|
+
updatedAt: z.ZodString;
|
|
196
|
+
}, "strip", z.ZodTypeAny, {
|
|
197
|
+
type: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS";
|
|
198
|
+
id: string;
|
|
199
|
+
createdAt: string;
|
|
200
|
+
updatedAt: string;
|
|
201
|
+
farmId: string;
|
|
202
|
+
fieldId: string;
|
|
203
|
+
unit: string;
|
|
204
|
+
createdBy: string | null;
|
|
205
|
+
result: number;
|
|
206
|
+
label: string | null;
|
|
207
|
+
points: [number, number][];
|
|
208
|
+
segments: {
|
|
209
|
+
distance: number;
|
|
210
|
+
bearing?: number | undefined;
|
|
211
|
+
}[] | null;
|
|
212
|
+
}, {
|
|
213
|
+
type: "DISTANCE" | "AREA" | "PERIMETER" | "RADIUS";
|
|
214
|
+
id: string;
|
|
215
|
+
createdAt: string;
|
|
216
|
+
updatedAt: string;
|
|
217
|
+
farmId: string;
|
|
218
|
+
fieldId: string;
|
|
219
|
+
unit: string;
|
|
220
|
+
createdBy: string | null;
|
|
221
|
+
result: number;
|
|
222
|
+
label: string | null;
|
|
223
|
+
points: [number, number][];
|
|
224
|
+
segments: {
|
|
225
|
+
distance: number;
|
|
226
|
+
bearing?: number | undefined;
|
|
227
|
+
}[] | null;
|
|
228
|
+
}>;
|
|
229
|
+
export type MeasurementType = z.infer<typeof measurementTypeSchema>;
|
|
230
|
+
export type MeasurementSegment = z.infer<typeof measurementSegmentSchema>;
|
|
231
|
+
export type MeasurementResponse = z.infer<typeof measurementSchema>;
|
|
232
|
+
export type CreateMeasurementBody = z.infer<typeof createMeasurementBodySchema>;
|
|
233
|
+
export type MeasurementListQuery = z.infer<typeof measurementListQuerySchema>;
|
|
234
|
+
//# sourceMappingURL=measurements.schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measurements.schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/measurements.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,qBAAqB,wDAAsD,CAAC;AAEzF;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;EAGnC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB,8CAAoC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;EAMtC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;EAErC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAA6B,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAoB,CAAC;AAGjE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACpE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Measurement type enum matching Prisma MeasurementType
|
|
4
|
+
*/
|
|
5
|
+
export const measurementTypeSchema = z.enum(['DISTANCE', 'AREA', 'PERIMETER', 'RADIUS']);
|
|
6
|
+
/**
|
|
7
|
+
* Segment schema for multi-point measurements
|
|
8
|
+
*/
|
|
9
|
+
export const measurementSegmentSchema = z.object({
|
|
10
|
+
distance: z.number(),
|
|
11
|
+
bearing: z.number().optional(),
|
|
12
|
+
});
|
|
13
|
+
/**
|
|
14
|
+
* Coordinate point schema [lat, lng]
|
|
15
|
+
*/
|
|
16
|
+
export const coordinatePointSchema = z.tuple([z.number(), z.number()]);
|
|
17
|
+
/**
|
|
18
|
+
* Measurement response schema
|
|
19
|
+
*/
|
|
20
|
+
export const measurementSchema = z.object({
|
|
21
|
+
id: z.string().uuid(),
|
|
22
|
+
fieldId: z.string().uuid(),
|
|
23
|
+
farmId: z.string().uuid(),
|
|
24
|
+
type: measurementTypeSchema,
|
|
25
|
+
label: z.string().nullable(),
|
|
26
|
+
points: z.array(coordinatePointSchema),
|
|
27
|
+
result: z.number(),
|
|
28
|
+
unit: z.string(),
|
|
29
|
+
segments: z.array(measurementSegmentSchema).nullable(),
|
|
30
|
+
createdBy: z.string().uuid().nullable(),
|
|
31
|
+
createdAt: z.string().datetime(),
|
|
32
|
+
updatedAt: z.string().datetime(),
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Create measurement request body schema
|
|
36
|
+
*/
|
|
37
|
+
export const createMeasurementBodySchema = z.object({
|
|
38
|
+
type: measurementTypeSchema,
|
|
39
|
+
label: z.string().max(200).optional(),
|
|
40
|
+
points: z.array(coordinatePointSchema).min(1, 'At least one point is required'),
|
|
41
|
+
result: z.number(),
|
|
42
|
+
unit: z.string().max(20),
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* Query schema for filtering measurements by type
|
|
46
|
+
*/
|
|
47
|
+
export const measurementListQuerySchema = z.object({
|
|
48
|
+
type: measurementTypeSchema.optional(),
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* List response schema
|
|
52
|
+
*/
|
|
53
|
+
export const measurementListResponseSchema = z.array(measurementSchema);
|
|
54
|
+
/**
|
|
55
|
+
* Single measurement response schema
|
|
56
|
+
*/
|
|
57
|
+
export const measurementSingleResponseSchema = measurementSchema;
|