@adventurelabs/scout-core 1.4.5 → 1.4.7

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.
@@ -3,5 +3,9 @@ import { IConnectivityWithCoordinates, IConnectivity, ConnectivityInsert, Connec
3
3
  import { SupabaseClient } from "@supabase/supabase-js";
4
4
  export declare function server_get_connectivity_by_session_id(sessionId: number): Promise<IWebResponseCompatible<IConnectivityWithCoordinates[]>>;
5
5
  export declare function server_get_connectivity_by_device_id(deviceId: number, timestamp: string): Promise<IWebResponseCompatible<IConnectivityWithCoordinates[]>>;
6
- export declare function server_insert_connectivity(connectivity: ConnectivityInsert, client?: SupabaseClient): Promise<IWebResponseCompatible<IConnectivity | null>>;
7
- export declare function server_update_connectivity(connectivityId: number, updates: ConnectivityUpdate, client?: SupabaseClient): Promise<IWebResponseCompatible<IConnectivity | null>>;
6
+ export declare function server_insert_connectivity(connectivity: ConnectivityInsert | ConnectivityInsert[], client?: SupabaseClient): Promise<IWebResponseCompatible<IConnectivity[]>>;
7
+ export declare function server_update_connectivity(connectivity: (ConnectivityUpdate & {
8
+ id: number;
9
+ }) | (ConnectivityUpdate & {
10
+ id: number;
11
+ })[], client?: SupabaseClient): Promise<IWebResponseCompatible<IConnectivity[]>>;
@@ -44,51 +44,55 @@ export async function server_get_connectivity_by_device_id(deviceId, timestamp)
44
44
  });
45
45
  return IWebResponse.success(sortedConnectivity).to_compatible();
46
46
  }
47
- // Insert a new connectivity record
47
+ // Insert new connectivity records (accepts array for batch operations)
48
48
  export async function server_insert_connectivity(connectivity, client) {
49
49
  const supabase = client || (await newServerClient());
50
+ const connectivityArray = Array.isArray(connectivity)
51
+ ? connectivity
52
+ : [connectivity];
50
53
  const { data, error } = await supabase
51
54
  .from("connectivity")
52
- .insert([connectivity])
53
- .select("*")
54
- .single();
55
+ .insert(connectivityArray)
56
+ .select("*");
55
57
  if (error) {
56
58
  console.warn("Error inserting connectivity:", error.message);
57
59
  return {
58
60
  status: EnumWebResponse.ERROR,
59
61
  msg: error.message,
60
- data: null,
62
+ data: [],
61
63
  };
62
64
  }
63
- return IWebResponse.success(data).to_compatible();
65
+ return IWebResponse.success(data || []).to_compatible();
64
66
  }
65
- // Update an existing connectivity record
66
- export async function server_update_connectivity(connectivityId, updates, client) {
67
+ // Update existing connectivity records (accepts array for batch operations)
68
+ // Each connectivity record in the array must include an 'id' field
69
+ export async function server_update_connectivity(connectivity, client) {
67
70
  const supabase = client || (await newServerClient());
68
- // Remove fields that shouldn't be updated
69
- const updateData = { ...updates };
70
- delete updateData.id;
71
- delete updateData.inserted_at;
72
- const { data, error } = await supabase
73
- .from("connectivity")
74
- .update(updateData)
75
- .eq("id", connectivityId)
76
- .select("*")
77
- .single();
78
- if (error) {
79
- console.warn("Error updating connectivity:", error.message);
80
- return {
81
- status: EnumWebResponse.ERROR,
82
- msg: error.message,
83
- data: null,
84
- };
85
- }
86
- if (!data) {
87
- return {
88
- status: EnumWebResponse.ERROR,
89
- msg: "Connectivity record not found or update failed",
90
- data: null,
91
- };
71
+ const connectivityArray = Array.isArray(connectivity)
72
+ ? connectivity
73
+ : [connectivity];
74
+ const updatedConnectivity = [];
75
+ for (const record of connectivityArray) {
76
+ const { id, ...updateData } = record;
77
+ // Remove fields that shouldn't be updated
78
+ delete updateData.inserted_at;
79
+ const { data, error } = await supabase
80
+ .from("connectivity")
81
+ .update(updateData)
82
+ .eq("id", id)
83
+ .select("*")
84
+ .single();
85
+ if (error) {
86
+ console.warn("Error updating connectivity:", error.message);
87
+ return {
88
+ status: EnumWebResponse.ERROR,
89
+ msg: error.message,
90
+ data: [],
91
+ };
92
+ }
93
+ if (data) {
94
+ updatedConnectivity.push(data);
95
+ }
92
96
  }
93
- return IWebResponse.success(data).to_compatible();
97
+ return IWebResponse.success(updatedConnectivity).to_compatible();
94
98
  }
@@ -3,5 +3,9 @@ import { EnumSessionsVisibility } from "../types/events";
3
3
  import { IEvent, EventInsert, EventUpdate } from "../types/db";
4
4
  import { SupabaseClient } from "@supabase/supabase-js";
5
5
  export declare function server_get_total_events_by_herd(herd_id: number, sessions_visibility: EnumSessionsVisibility): Promise<IWebResponseCompatible<number>>;
6
- export declare function server_insert_event(event: EventInsert, client?: SupabaseClient): Promise<IWebResponseCompatible<IEvent | null>>;
7
- export declare function server_update_event(eventId: number, updates: EventUpdate, client?: SupabaseClient): Promise<IWebResponseCompatible<IEvent | null>>;
6
+ export declare function server_insert_event(events: EventInsert | EventInsert[], client?: SupabaseClient): Promise<IWebResponseCompatible<IEvent[]>>;
7
+ export declare function server_update_event(events: (EventUpdate & {
8
+ id: number;
9
+ }) | (EventUpdate & {
10
+ id: number;
11
+ })[], client?: SupabaseClient): Promise<IWebResponseCompatible<IEvent[]>>;
@@ -22,51 +22,51 @@ export async function server_get_total_events_by_herd(herd_id, sessions_visibili
22
22
  return IWebResponse.success(data || 0).to_compatible();
23
23
  }
24
24
  }
25
- // Insert a new event
26
- export async function server_insert_event(event, client) {
25
+ // Insert new events (accepts array for batch operations)
26
+ export async function server_insert_event(events, client) {
27
27
  const supabase = client || (await newServerClient());
28
+ const eventsArray = Array.isArray(events) ? events : [events];
28
29
  const { data, error } = await supabase
29
30
  .from("events")
30
- .insert([event])
31
- .select("*")
32
- .single();
31
+ .insert(eventsArray)
32
+ .select("*");
33
33
  if (error) {
34
- console.warn("Error inserting event:", error.message);
34
+ console.warn("Error inserting events:", error.message);
35
35
  return {
36
36
  status: EnumWebResponse.ERROR,
37
37
  msg: error.message,
38
- data: null,
38
+ data: [],
39
39
  };
40
40
  }
41
- return IWebResponse.success(data).to_compatible();
41
+ return IWebResponse.success(data || []).to_compatible();
42
42
  }
43
- // Update an existing event
44
- export async function server_update_event(eventId, updates, client) {
43
+ // Update existing events (accepts array for batch operations)
44
+ // Each event in the array must include an 'id' field
45
+ export async function server_update_event(events, client) {
45
46
  const supabase = client || (await newServerClient());
46
- // Remove fields that shouldn't be updated
47
- const updateData = { ...updates };
48
- delete updateData.id;
49
- delete updateData.inserted_at;
50
- const { data, error } = await supabase
51
- .from("events")
52
- .update(updateData)
53
- .eq("id", eventId)
54
- .select("*")
55
- .single();
56
- if (error) {
57
- console.warn("Error updating event:", error.message);
58
- return {
59
- status: EnumWebResponse.ERROR,
60
- msg: error.message,
61
- data: null,
62
- };
63
- }
64
- if (!data) {
65
- return {
66
- status: EnumWebResponse.ERROR,
67
- msg: "Event not found or update failed",
68
- data: null,
69
- };
47
+ const eventsArray = Array.isArray(events) ? events : [events];
48
+ const updatedEvents = [];
49
+ for (const event of eventsArray) {
50
+ const { id, ...updateData } = event;
51
+ // Remove fields that shouldn't be updated
52
+ delete updateData.inserted_at;
53
+ const { data, error } = await supabase
54
+ .from("events")
55
+ .update(updateData)
56
+ .eq("id", id)
57
+ .select("*")
58
+ .single();
59
+ if (error) {
60
+ console.warn("Error updating event:", error.message);
61
+ return {
62
+ status: EnumWebResponse.ERROR,
63
+ msg: error.message,
64
+ data: [],
65
+ };
66
+ }
67
+ if (data) {
68
+ updatedEvents.push(data);
69
+ }
70
70
  }
71
- return IWebResponse.success(data).to_compatible();
71
+ return IWebResponse.success(updatedEvents).to_compatible();
72
72
  }
@@ -5,5 +5,9 @@ export declare function server_get_session_by_id(sessionId: number, client?: Sup
5
5
  export declare function server_get_session_usage_over_time_by_herd(herd_id: number, client?: SupabaseClient): Promise<IWebResponseCompatible<ISessionUsageOverTime>>;
6
6
  export declare function server_get_session_usage_over_time_by_device(device_id: number, client?: SupabaseClient): Promise<IWebResponseCompatible<ISessionUsageOverTime>>;
7
7
  export declare function server_get_events_and_tags_by_session_id(sessionId: number, limit?: number, offset?: number): Promise<IWebResponseCompatible<IEventAndTagsPrettyLocation[]>>;
8
- export declare function server_insert_session(session: SessionInsert, client?: SupabaseClient): Promise<IWebResponseCompatible<ISession | null>>;
9
- export declare function server_update_session(sessionId: number, updates: SessionUpdate, client?: SupabaseClient): Promise<IWebResponseCompatible<ISession | null>>;
8
+ export declare function server_insert_session(sessions: SessionInsert | SessionInsert[], client?: SupabaseClient): Promise<IWebResponseCompatible<ISession[]>>;
9
+ export declare function server_update_session(sessions: (SessionUpdate & {
10
+ id: number;
11
+ }) | (SessionUpdate & {
12
+ id: number;
13
+ })[], client?: SupabaseClient): Promise<IWebResponseCompatible<ISession[]>>;
@@ -71,51 +71,51 @@ export async function server_get_events_and_tags_by_session_id(sessionId, limit
71
71
  }
72
72
  return IWebResponse.success(data || []).to_compatible();
73
73
  }
74
- // Insert a new session
75
- export async function server_insert_session(session, client) {
74
+ // Insert new sessions (accepts array for batch operations)
75
+ export async function server_insert_session(sessions, client) {
76
76
  const supabase = client || (await newServerClient());
77
+ const sessionsArray = Array.isArray(sessions) ? sessions : [sessions];
77
78
  const { data, error } = await supabase
78
79
  .from("sessions")
79
- .insert([session])
80
- .select("*")
81
- .single();
80
+ .insert(sessionsArray)
81
+ .select("*");
82
82
  if (error) {
83
- console.warn("Error inserting session:", error.message);
83
+ console.warn("Error inserting sessions:", error.message);
84
84
  return {
85
85
  status: EnumWebResponse.ERROR,
86
86
  msg: error.message,
87
- data: null,
87
+ data: [],
88
88
  };
89
89
  }
90
- return IWebResponse.success(data).to_compatible();
90
+ return IWebResponse.success(data || []).to_compatible();
91
91
  }
92
- // Update an existing session
93
- export async function server_update_session(sessionId, updates, client) {
92
+ // Update existing sessions (accepts array for batch operations)
93
+ // Each session in the array must include an 'id' field
94
+ export async function server_update_session(sessions, client) {
94
95
  const supabase = client || (await newServerClient());
95
- // Remove fields that shouldn't be updated
96
- const updateData = { ...updates };
97
- delete updateData.id;
98
- delete updateData.inserted_at;
99
- const { data, error } = await supabase
100
- .from("sessions")
101
- .update(updateData)
102
- .eq("id", sessionId)
103
- .select("*")
104
- .single();
105
- if (error) {
106
- console.warn("Error updating session:", error.message);
107
- return {
108
- status: EnumWebResponse.ERROR,
109
- msg: error.message,
110
- data: null,
111
- };
96
+ const sessionsArray = Array.isArray(sessions) ? sessions : [sessions];
97
+ const updatedSessions = [];
98
+ for (const session of sessionsArray) {
99
+ const { id, ...updateData } = session;
100
+ // Remove fields that shouldn't be updated
101
+ delete updateData.inserted_at;
102
+ const { data, error } = await supabase
103
+ .from("sessions")
104
+ .update(updateData)
105
+ .eq("id", id)
106
+ .select("*")
107
+ .single();
108
+ if (error) {
109
+ console.warn("Error updating session:", error.message);
110
+ return {
111
+ status: EnumWebResponse.ERROR,
112
+ msg: error.message,
113
+ data: [],
114
+ };
115
+ }
116
+ if (data) {
117
+ updatedSessions.push(data);
118
+ }
112
119
  }
113
- if (!data) {
114
- return {
115
- status: EnumWebResponse.ERROR,
116
- msg: "Session not found or update failed",
117
- data: null,
118
- };
119
- }
120
- return IWebResponse.success(data).to_compatible();
120
+ return IWebResponse.success(updatedSessions).to_compatible();
121
121
  }
@@ -840,6 +840,7 @@ export declare function useSupabase(): SupabaseClient<Database, "public", "publi
840
840
  };
841
841
  versions_software: {
842
842
  Row: {
843
+ broken: boolean;
843
844
  commit_hash: string | null;
844
845
  created_at: string;
845
846
  description: string;
@@ -854,6 +855,7 @@ export declare function useSupabase(): SupabaseClient<Database, "public", "publi
854
855
  version: string;
855
856
  };
856
857
  Insert: {
858
+ broken?: boolean;
857
859
  commit_hash?: string | null;
858
860
  created_at?: string;
859
861
  description: string;
@@ -868,6 +870,7 @@ export declare function useSupabase(): SupabaseClient<Database, "public", "publi
868
870
  version: string;
869
871
  };
870
872
  Update: {
873
+ broken?: boolean;
871
874
  commit_hash?: string | null;
872
875
  created_at?: string;
873
876
  description?: string;
@@ -883,6 +883,7 @@ export type Database = {
883
883
  };
884
884
  versions_software: {
885
885
  Row: {
886
+ broken: boolean;
886
887
  commit_hash: string | null;
887
888
  created_at: string;
888
889
  description: string;
@@ -897,6 +898,7 @@ export type Database = {
897
898
  version: string;
898
899
  };
899
900
  Insert: {
901
+ broken?: boolean;
900
902
  commit_hash?: string | null;
901
903
  created_at?: string;
902
904
  description: string;
@@ -911,6 +913,7 @@ export type Database = {
911
913
  version: string;
912
914
  };
913
915
  Update: {
916
+ broken?: boolean;
914
917
  commit_hash?: string | null;
915
918
  created_at?: string;
916
919
  description?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adventurelabs/scout-core",
3
- "version": "1.4.5",
3
+ "version": "1.4.7",
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",