@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.
Files changed (43) hide show
  1. package/dist/index.d.ts +11 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +10 -0
  4. package/dist/routes/crop-profile.routes.d.ts +556 -0
  5. package/dist/routes/crop-profile.routes.d.ts.map +1 -0
  6. package/dist/routes/crop-profile.routes.js +55 -0
  7. package/dist/routes/geofences.routes.d.ts +1913 -0
  8. package/dist/routes/geofences.routes.d.ts.map +1 -0
  9. package/dist/routes/geofences.routes.js +105 -0
  10. package/dist/routes/index.d.ts +15 -0
  11. package/dist/routes/index.d.ts.map +1 -1
  12. package/dist/routes/index.js +10 -0
  13. package/dist/routes/livestock-map.routes.d.ts +1319 -0
  14. package/dist/routes/livestock-map.routes.d.ts.map +1 -0
  15. package/dist/routes/livestock-map.routes.js +83 -0
  16. package/dist/routes/measurements.routes.d.ts +1081 -0
  17. package/dist/routes/measurements.routes.d.ts.map +1 -0
  18. package/dist/routes/measurements.routes.js +69 -0
  19. package/dist/routes/monitoring-visualization.routes.d.ts +1637 -0
  20. package/dist/routes/monitoring-visualization.routes.d.ts.map +1 -1
  21. package/dist/routes/monitoring-visualization.routes.js +153 -0
  22. package/dist/routes/prescription-maps.routes.d.ts +3092 -0
  23. package/dist/routes/prescription-maps.routes.d.ts.map +1 -0
  24. package/dist/routes/prescription-maps.routes.js +143 -0
  25. package/dist/schemas/crop-profile.schemas.d.ts +724 -0
  26. package/dist/schemas/crop-profile.schemas.d.ts.map +1 -0
  27. package/dist/schemas/crop-profile.schemas.js +84 -0
  28. package/dist/schemas/geofences.schemas.d.ts +358 -0
  29. package/dist/schemas/geofences.schemas.d.ts.map +1 -0
  30. package/dist/schemas/geofences.schemas.js +44 -0
  31. package/dist/schemas/livestock-map.schemas.d.ts +328 -0
  32. package/dist/schemas/livestock-map.schemas.d.ts.map +1 -0
  33. package/dist/schemas/livestock-map.schemas.js +52 -0
  34. package/dist/schemas/measurements.schemas.d.ts +234 -0
  35. package/dist/schemas/measurements.schemas.d.ts.map +1 -0
  36. package/dist/schemas/measurements.schemas.js +57 -0
  37. package/dist/schemas/monitoring-visualization.schemas.d.ts +1703 -0
  38. package/dist/schemas/monitoring-visualization.schemas.d.ts.map +1 -1
  39. package/dist/schemas/monitoring-visualization.schemas.js +338 -0
  40. package/dist/schemas/prescription-maps.schemas.d.ts +974 -0
  41. package/dist/schemas/prescription-maps.schemas.d.ts.map +1 -0
  42. package/dist/schemas/prescription-maps.schemas.js +132 -0
  43. 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;