@adventurelabs/scout-core 1.5.2 → 1.5.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.
@@ -40,6 +40,7 @@ export * from "./cache";
40
40
  export * from "./observations";
41
41
  export * from "./operators";
42
42
  export * from "./parts";
43
+ export * from "./sensor_poses";
43
44
  export * from "./versions_software";
44
45
  export * from "./versions_software_server";
45
46
  export * from "./artifacts";
@@ -40,6 +40,7 @@ export * from "./cache";
40
40
  export * from "./observations";
41
41
  export * from "./operators";
42
42
  export * from "./parts";
43
+ export * from "./sensor_poses";
43
44
  export * from "./versions_software";
44
45
  export * from "./versions_software_server";
45
46
  export * from "./artifacts";
@@ -1,4 +1,4 @@
1
- import { DocumentConditionCreateInput, DocumentConditionUpdateInput, IDocumentCondition, IOperatingContext, IOperatingContextEquipmentCategory, IOperatingContextEquipmentItem, IOperatingContextEquipmentRequirement, IOperatingContextPayload, IOperatingContextRegion, IOperatingContextRisk, IOperatingContextRole, IOperatingContextRoleAssignment, IOperatingContextType, IOperatingContextWeatherSnapshot, OperatingContextCreateInput, OperatingContextEquipmentCategoryCreateInput, OperatingContextEquipmentCategoryUpdateInput, OperatingContextEquipmentItemCreateInput, OperatingContextEquipmentItemUpdateInput, OperatingContextEquipmentRequirementCreateInput, OperatingContextEquipmentRequirementUpdateInput, OperatingContextListOptions, OperatingContextPayloadCreateInput, OperatingContextPayloadUpdateInput, OperatingContextRegionCreateInput, OperatingContextRegionUpdateInput, OperatingContextRiskCreateInput, OperatingContextRiskUpdateInput, OperatingContextRoleAssignmentCreateInput, OperatingContextRoleAssignmentUpdateInput, OperatingContextRoleCreateInput, OperatingContextRoleUpdateInput, OperatingContextTypeCreateInput, OperatingContextTypeUpdateInput, OperatingContextUpdateInput } from "../types/db";
1
+ import { DocumentConditionCreateInput, DocumentConditionUpdateInput, IDocumentCondition, IOperatingContext, IOperatingContextDevice, IOperatingContextEquipmentCategory, IOperatingContextEquipmentItem, IOperatingContextEquipmentRequirement, IOperatingContextPayload, IOperatingContextRegion, IOperatingContextRisk, IOperatingContextRole, IOperatingContextRoleAssignment, IOperatingContextType, IOperatingContextWeatherSnapshot, OperatingContextCreateInput, OperatingContextDeviceCreateInput, OperatingContextDeviceUpdateInput, OperatingContextEquipmentCategoryCreateInput, OperatingContextEquipmentCategoryUpdateInput, OperatingContextEquipmentItemCreateInput, OperatingContextEquipmentItemUpdateInput, OperatingContextEquipmentRequirementCreateInput, OperatingContextEquipmentRequirementUpdateInput, OperatingContextListOptions, OperatingContextPayloadCreateInput, OperatingContextPayloadUpdateInput, OperatingContextRegionCreateInput, OperatingContextRegionUpdateInput, OperatingContextRiskCreateInput, OperatingContextRiskUpdateInput, OperatingContextRoleAssignmentCreateInput, OperatingContextRoleAssignmentUpdateInput, OperatingContextRoleCreateInput, OperatingContextRoleUpdateInput, OperatingContextTypeCreateInput, OperatingContextTypeUpdateInput, OperatingContextUpdateInput } from "../types/db";
2
2
  import { IWebResponseCompatible } from "../types/requests";
3
3
  export declare function server_get_document_conditions_by_localization(localization_id: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IDocumentCondition[]>>;
4
4
  export declare function server_create_document_condition(row: DocumentConditionCreateInput): Promise<IWebResponseCompatible<IDocumentCondition | null>>;
@@ -25,6 +25,9 @@ export declare function server_update_operating_context_payload(id: number, upda
25
25
  export declare function server_get_operating_context_role_assignments_by_operating_context(operating_context_id: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContextRoleAssignment[]>>;
26
26
  export declare function server_create_operating_context_role_assignment(row: OperatingContextRoleAssignmentCreateInput): Promise<IWebResponseCompatible<IOperatingContextRoleAssignment | null>>;
27
27
  export declare function server_update_operating_context_role_assignment(id: number, updates: OperatingContextRoleAssignmentUpdateInput): Promise<IWebResponseCompatible<IOperatingContextRoleAssignment | null>>;
28
+ export declare function server_get_operating_context_devices_by_operating_context(operating_context_id: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContextDevice[]>>;
29
+ export declare function server_create_operating_context_device(row: OperatingContextDeviceCreateInput): Promise<IWebResponseCompatible<IOperatingContextDevice | null>>;
30
+ export declare function server_update_operating_context_device(id: number, updates: OperatingContextDeviceUpdateInput): Promise<IWebResponseCompatible<IOperatingContextDevice | null>>;
28
31
  export declare function server_get_operating_context_equipment_requirements_by_operating_context(operating_context_id: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContextEquipmentRequirement[]>>;
29
32
  export declare function server_create_operating_context_equipment_requirement(row: OperatingContextEquipmentRequirementCreateInput): Promise<IWebResponseCompatible<IOperatingContextEquipmentRequirement | null>>;
30
33
  export declare function server_update_operating_context_equipment_requirement(id: number, updates: OperatingContextEquipmentRequirementUpdateInput): Promise<IWebResponseCompatible<IOperatingContextEquipmentRequirement | null>>;
@@ -177,6 +177,15 @@ export async function server_create_operating_context_role_assignment(row) {
177
177
  export async function server_update_operating_context_role_assignment(id, updates) {
178
178
  return patch_row("operating_context_role_assignments", id, updates, "lifecycle");
179
179
  }
180
+ export async function server_get_operating_context_devices_by_operating_context(operating_context_id, options) {
181
+ return list_by("operating_contexts_devices", "operating_context_id", operating_context_id, options);
182
+ }
183
+ export async function server_create_operating_context_device(row) {
184
+ return insert_row("operating_contexts_devices", row);
185
+ }
186
+ export async function server_update_operating_context_device(id, updates) {
187
+ return patch_row("operating_contexts_devices", id, updates, "lifecycle");
188
+ }
180
189
  export async function server_get_operating_context_equipment_requirements_by_operating_context(operating_context_id, options) {
181
190
  return list_by("operating_context_equipment_requirements", "operating_context_id", operating_context_id, options);
182
191
  }
@@ -0,0 +1,16 @@
1
+ import { Database } from "../types/supabase";
2
+ import { ISensorPose, SensorPoseInsert, SensorPoseUpdate } from "../types/db";
3
+ import { IWebResponseCompatible } from "../types/requests";
4
+ import { SupabaseClient } from "@supabase/supabase-js";
5
+ interface SensorPoseTimeRangeOptions {
6
+ start_timestamp?: string;
7
+ end_timestamp?: string;
8
+ limit?: number;
9
+ }
10
+ export declare function get_sensor_poses_by_part_id(client: SupabaseClient<Database>, part_id: number, options?: SensorPoseTimeRangeOptions): Promise<IWebResponseCompatible<ISensorPose[]>>;
11
+ export declare function get_sensor_pose_by_id(client: SupabaseClient<Database>, sensor_pose_id: number): Promise<IWebResponseCompatible<ISensorPose | null>>;
12
+ export declare function create_sensor_pose(client: SupabaseClient<Database>, row: SensorPoseInsert): Promise<IWebResponseCompatible<ISensorPose | null>>;
13
+ export declare function create_sensor_poses(client: SupabaseClient<Database>, rows: SensorPoseInsert[]): Promise<IWebResponseCompatible<ISensorPose[]>>;
14
+ export declare function update_sensor_pose(client: SupabaseClient<Database>, sensor_pose_id: number, patch: SensorPoseUpdate): Promise<IWebResponseCompatible<ISensorPose | null>>;
15
+ export declare function delete_sensor_pose(client: SupabaseClient<Database>, sensor_pose_id: number): Promise<IWebResponseCompatible<ISensorPose | null>>;
16
+ export {};
@@ -0,0 +1,97 @@
1
+ import { IWebResponse } from "../types/requests";
2
+ export async function get_sensor_poses_by_part_id(client, part_id, options) {
3
+ let query = client
4
+ .from("sensor_poses")
5
+ .select("*")
6
+ .eq("part_id", part_id)
7
+ .order("timestamp_observation", { ascending: true });
8
+ if (options?.start_timestamp) {
9
+ query = query.gte("timestamp_observation", options.start_timestamp);
10
+ }
11
+ if (options?.end_timestamp) {
12
+ query = query.lte("timestamp_observation", options.end_timestamp);
13
+ }
14
+ if (options?.limit != null) {
15
+ query = query.limit(options.limit);
16
+ }
17
+ const { data, error } = await query;
18
+ if (error) {
19
+ return IWebResponse.error(error.message).to_compatible();
20
+ }
21
+ return IWebResponse.success(data ?? []).to_compatible();
22
+ }
23
+ export async function get_sensor_pose_by_id(client, sensor_pose_id) {
24
+ const { data, error } = await client
25
+ .from("sensor_poses")
26
+ .select("*")
27
+ .eq("id", sensor_pose_id)
28
+ .maybeSingle();
29
+ if (error) {
30
+ return IWebResponse.error(error.message).to_compatible();
31
+ }
32
+ if (!data) {
33
+ return IWebResponse.error("Sensor pose not found").to_compatible();
34
+ }
35
+ return IWebResponse.success(data).to_compatible();
36
+ }
37
+ export async function create_sensor_pose(client, row) {
38
+ const { data, error } = await client
39
+ .from("sensor_poses")
40
+ .insert([row])
41
+ .select("*")
42
+ .single();
43
+ if (error) {
44
+ return IWebResponse.error(error.message).to_compatible();
45
+ }
46
+ if (!data) {
47
+ return IWebResponse.error("Failed to create sensor pose").to_compatible();
48
+ }
49
+ return IWebResponse.success(data).to_compatible();
50
+ }
51
+ export async function create_sensor_poses(client, rows) {
52
+ if (rows.length === 0) {
53
+ return IWebResponse.success([]).to_compatible();
54
+ }
55
+ const { data, error } = await client
56
+ .from("sensor_poses")
57
+ .insert(rows)
58
+ .select("*");
59
+ if (error) {
60
+ return IWebResponse.error(error.message).to_compatible();
61
+ }
62
+ return IWebResponse.success(data ?? []).to_compatible();
63
+ }
64
+ export async function update_sensor_pose(client, sensor_pose_id, patch) {
65
+ const { id: _id, inserted_at: _ia, ...updateData } = patch;
66
+ if (Object.keys(updateData).length === 0) {
67
+ return IWebResponse.error("No valid fields to update").to_compatible();
68
+ }
69
+ const { data, error } = await client
70
+ .from("sensor_poses")
71
+ .update(updateData)
72
+ .eq("id", sensor_pose_id)
73
+ .select("*")
74
+ .single();
75
+ if (error) {
76
+ return IWebResponse.error(error.message).to_compatible();
77
+ }
78
+ if (!data) {
79
+ return IWebResponse.error("Sensor pose not found or update failed").to_compatible();
80
+ }
81
+ return IWebResponse.success(data).to_compatible();
82
+ }
83
+ export async function delete_sensor_pose(client, sensor_pose_id) {
84
+ const { data, error } = await client
85
+ .from("sensor_poses")
86
+ .delete()
87
+ .eq("id", sensor_pose_id)
88
+ .select("*")
89
+ .single();
90
+ if (error) {
91
+ return IWebResponse.error(error.message).to_compatible();
92
+ }
93
+ if (!data) {
94
+ return IWebResponse.error("Sensor pose not found or deletion failed").to_compatible();
95
+ }
96
+ return IWebResponse.success(data).to_compatible();
97
+ }
@@ -1,12 +1,12 @@
1
1
  import { SupabaseClient } from "@supabase/supabase-js";
2
2
  import { Database } from "../types/supabase";
3
- import { IOperatingContext, IOperatingContextEquipmentRequirement, IOperatingContextPayload, IOperatingContextRegion, IOperatingContextRisk, IOperatingContextRoleAssignment } from "../types/db";
3
+ import { IOperatingContext, IOperatingContextDevice, IOperatingContextEquipmentRequirement, IOperatingContextPayload, IOperatingContextRegion, IOperatingContextRisk, IOperatingContextRoleAssignment } from "../types/db";
4
4
  import { RealtimeData } from "../types/realtime";
5
5
  import { ScoutRealtimeBroadcastOptions } from "./useScoutRealtimeBroadcast";
6
- export type OperatingContextRealtimeRow = IOperatingContext | IOperatingContextPayload | IOperatingContextRoleAssignment | IOperatingContextEquipmentRequirement | IOperatingContextRegion | IOperatingContextRisk;
6
+ export type OperatingContextRealtimeRow = IOperatingContext | IOperatingContextDevice | IOperatingContextPayload | IOperatingContextRoleAssignment | IOperatingContextEquipmentRequirement | IOperatingContextRegion | IOperatingContextRisk;
7
7
  type OperatingContextRealtimeChange<T, Table extends string> = Omit<RealtimeData<T>, "table"> & {
8
8
  table: Table;
9
9
  };
10
- export type OperatingContextRealtimeData = OperatingContextRealtimeChange<IOperatingContext, "operating_contexts"> | OperatingContextRealtimeChange<IOperatingContextPayload, "operating_context_payloads"> | OperatingContextRealtimeChange<IOperatingContextRoleAssignment, "operating_context_role_assignments"> | OperatingContextRealtimeChange<IOperatingContextEquipmentRequirement, "operating_context_equipment_requirements"> | OperatingContextRealtimeChange<IOperatingContextRegion, "operating_context_regions"> | OperatingContextRealtimeChange<IOperatingContextRisk, "operating_context_risks">;
10
+ export type OperatingContextRealtimeData = OperatingContextRealtimeChange<IOperatingContext, "operating_contexts"> | OperatingContextRealtimeChange<IOperatingContextDevice, "operating_contexts_devices"> | OperatingContextRealtimeChange<IOperatingContextPayload, "operating_context_payloads"> | OperatingContextRealtimeChange<IOperatingContextRoleAssignment, "operating_context_role_assignments"> | OperatingContextRealtimeChange<IOperatingContextEquipmentRequirement, "operating_context_equipment_requirements"> | OperatingContextRealtimeChange<IOperatingContextRegion, "operating_context_regions"> | OperatingContextRealtimeChange<IOperatingContextRisk, "operating_context_risks">;
11
11
  export declare function useScoutRealtimeOperatingContexts(scoutSupabase: SupabaseClient<Database>, options?: ScoutRealtimeBroadcastOptions): [OperatingContextRealtimeData | null, () => void];
12
12
  export {};
@@ -4,6 +4,7 @@ import { useSelector } from "react-redux";
4
4
  import { useScoutRealtimeBroadcast, } from "./useScoutRealtimeBroadcast";
5
5
  const TABLE_MARKERS = [
6
6
  ["operating_contexts", "operating_context_type_id"],
7
+ ["operating_contexts_devices", "device_id"],
7
8
  ["operating_context_payloads", "payload_type"],
8
9
  ["operating_context_role_assignments", "membership_id"],
9
10
  ["operating_context_equipment_requirements", "equipment_item_id"],
package/dist/index.d.ts CHANGED
@@ -62,6 +62,7 @@ export * from "./helpers/operators";
62
62
  export * from "./helpers/versions_software";
63
63
  export * from "./helpers/versions_software_server";
64
64
  export * from "./helpers/parts";
65
+ export * from "./helpers/sensor_poses";
65
66
  export * from "./helpers/manufacturers";
66
67
  export * from "./helpers/products";
67
68
  export * from "./helpers/product_numbers";
package/dist/index.js CHANGED
@@ -65,6 +65,7 @@ export * from "./helpers/operators";
65
65
  export * from "./helpers/versions_software";
66
66
  export * from "./helpers/versions_software_server";
67
67
  export * from "./helpers/parts";
68
+ export * from "./helpers/sensor_poses";
68
69
  export * from "./helpers/manufacturers";
69
70
  export * from "./helpers/products";
70
71
  export * from "./helpers/product_numbers";
@@ -80,6 +80,7 @@ export type IOperatingContextEquipmentItem = Database["public"]["Tables"]["opera
80
80
  export type IOperatingContext = Database["public"]["Tables"]["operating_contexts"]["Row"];
81
81
  export type IOperatingContextPayload = Database["public"]["Tables"]["operating_context_payloads"]["Row"];
82
82
  export type IOperatingContextRoleAssignment = Database["public"]["Tables"]["operating_context_role_assignments"]["Row"];
83
+ export type IOperatingContextDevice = Database["public"]["Tables"]["operating_contexts_devices"]["Row"];
83
84
  export type IOperatingContextEquipmentRequirement = Database["public"]["Tables"]["operating_context_equipment_requirements"]["Row"];
84
85
  export type IOperatingContextRegion = Database["public"]["Tables"]["operating_context_regions"]["Row"];
85
86
  export type IOperatingContextRisk = Database["public"]["Tables"]["operating_context_risks"]["Row"];
@@ -120,6 +121,8 @@ export type OperatingContextPayloadCreateInput = Pick<OperatingContextPayloadIns
120
121
  export type OperatingContextPayloadUpdateInput = Partial<Omit<OperatingContextPayloadCreateInput, "operating_context_id">> & LifecyclePatch;
121
122
  export type OperatingContextRoleAssignmentCreateInput = Pick<OperatingContextRoleAssignmentInsert, "operating_context_id" | "membership_id" | "role_id" | "herd_id">;
122
123
  export type OperatingContextRoleAssignmentUpdateInput = Partial<Pick<OperatingContextRoleAssignmentCreateInput, "membership_id" | "role_id">> & LifecyclePatch;
124
+ export type OperatingContextDeviceCreateInput = Pick<OperatingContextDeviceInsert, "operating_context_id" | "device_id" | "herd_id">;
125
+ export type OperatingContextDeviceUpdateInput = Partial<Pick<OperatingContextDeviceCreateInput, "device_id">> & LifecyclePatch;
123
126
  export type OperatingContextEquipmentRequirementCreateInput = Pick<OperatingContextEquipmentRequirementInsert, "operating_context_id" | "equipment_item_id">;
124
127
  export type OperatingContextEquipmentRequirementUpdateInput = Partial<Pick<OperatingContextEquipmentRequirementCreateInput, "equipment_item_id">> & LifecyclePatch;
125
128
  export interface OperatingContextRegionCreateInput {
@@ -225,6 +228,8 @@ export type OperatingContextPayloadInsert = Database["public"]["Tables"]["operat
225
228
  export type OperatingContextPayloadUpdate = Database["public"]["Tables"]["operating_context_payloads"]["Update"];
226
229
  export type OperatingContextRoleAssignmentInsert = Database["public"]["Tables"]["operating_context_role_assignments"]["Insert"];
227
230
  export type OperatingContextRoleAssignmentUpdate = Database["public"]["Tables"]["operating_context_role_assignments"]["Update"];
231
+ export type OperatingContextDeviceInsert = Database["public"]["Tables"]["operating_contexts_devices"]["Insert"];
232
+ export type OperatingContextDeviceUpdate = Database["public"]["Tables"]["operating_contexts_devices"]["Update"];
228
233
  export type OperatingContextEquipmentRequirementInsert = Database["public"]["Tables"]["operating_context_equipment_requirements"]["Insert"];
229
234
  export type OperatingContextEquipmentRequirementUpdate = Database["public"]["Tables"]["operating_context_equipment_requirements"]["Update"];
230
235
  export type OperatingContextRegionInsert = Database["public"]["Tables"]["operating_context_regions"]["Insert"];
@@ -2693,6 +2693,64 @@ export type Database = {
2693
2693
  }
2694
2694
  ];
2695
2695
  };
2696
+ operating_contexts_devices: {
2697
+ Row: {
2698
+ device_id: number;
2699
+ herd_id: number;
2700
+ id: number;
2701
+ inserted_at: string;
2702
+ lifecycle: Database["public"]["Enums"]["entity_lifecycle"];
2703
+ lifecycle_changed_at: string;
2704
+ lifecycle_changed_by: string | null;
2705
+ lifecycle_reason: string | null;
2706
+ operating_context_id: number;
2707
+ };
2708
+ Insert: {
2709
+ device_id: number;
2710
+ herd_id: number;
2711
+ id?: number;
2712
+ inserted_at?: string;
2713
+ lifecycle?: Database["public"]["Enums"]["entity_lifecycle"];
2714
+ lifecycle_changed_at?: string;
2715
+ lifecycle_changed_by?: string | null;
2716
+ lifecycle_reason?: string | null;
2717
+ operating_context_id: number;
2718
+ };
2719
+ Update: {
2720
+ device_id?: number;
2721
+ herd_id?: number;
2722
+ id?: number;
2723
+ inserted_at?: string;
2724
+ lifecycle?: Database["public"]["Enums"]["entity_lifecycle"];
2725
+ lifecycle_changed_at?: string;
2726
+ lifecycle_changed_by?: string | null;
2727
+ lifecycle_reason?: string | null;
2728
+ operating_context_id?: number;
2729
+ };
2730
+ Relationships: [
2731
+ {
2732
+ foreignKeyName: "operating_context_device_context_fkey";
2733
+ columns: ["operating_context_id", "herd_id"];
2734
+ isOneToOne: false;
2735
+ referencedRelation: "operating_contexts";
2736
+ referencedColumns: ["id", "herd_id"];
2737
+ },
2738
+ {
2739
+ foreignKeyName: "operating_context_device_device_fkey";
2740
+ columns: ["device_id"];
2741
+ isOneToOne: false;
2742
+ referencedRelation: "devices";
2743
+ referencedColumns: ["id"];
2744
+ },
2745
+ {
2746
+ foreignKeyName: "operating_contexts_devices_lifecycle_changed_by_fkey";
2747
+ columns: ["lifecycle_changed_by"];
2748
+ isOneToOne: false;
2749
+ referencedRelation: "users";
2750
+ referencedColumns: ["id"];
2751
+ }
2752
+ ];
2753
+ };
2696
2754
  operators: {
2697
2755
  Row: {
2698
2756
  action: string | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adventurelabs/scout-core",
3
- "version": "1.5.2",
3
+ "version": "1.5.3",
4
4
  "description": "Core utilities and helpers for Adventure Labs Scout applications",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",