@adventurelabs/scout-core 1.4.96 → 1.5.1
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/api_keys/actions.d.ts +1 -2
- package/dist/api_keys/actions.js +4 -83
- package/dist/api_keys/queries.d.ts +4 -0
- package/dist/api_keys/queries.js +52 -0
- package/dist/helpers/artifacts.d.ts +10 -15
- package/dist/helpers/artifacts.internal.d.ts +22 -0
- package/dist/helpers/artifacts.internal.js +151 -0
- package/dist/helpers/artifacts.js +48 -81
- package/dist/helpers/client_abilities_jwt_keys.d.ts +3 -4
- package/dist/helpers/client_abilities_jwt_keys.js +7 -7
- package/dist/helpers/client_abilities_jwt_keys_internal.d.ts +9 -0
- package/dist/helpers/client_abilities_jwt_keys_internal.js +20 -0
- package/dist/helpers/client_abilities_token_server.d.ts +1 -5
- package/dist/helpers/client_abilities_token_server.js +2 -2
- package/dist/helpers/connectivity.d.ts +2 -3
- package/dist/helpers/connectivity.internal.d.ts +10 -0
- package/dist/helpers/connectivity.internal.js +47 -0
- package/dist/helpers/connectivity.js +6 -7
- package/dist/helpers/devices.d.ts +1 -3
- package/dist/helpers/devices.js +3 -12
- package/dist/helpers/devices.queries.d.ts +5 -0
- package/dist/helpers/devices.queries.js +10 -0
- package/dist/helpers/documents.d.ts +1 -0
- package/dist/helpers/documents.js +11 -2
- package/dist/helpers/embeddings.d.ts +1 -3
- package/dist/helpers/embeddings.internal.d.ts +5 -0
- package/dist/helpers/embeddings.internal.js +14 -0
- package/dist/helpers/embeddings.js +2 -2
- package/dist/helpers/events.d.ts +4 -6
- package/dist/helpers/events.internal.d.ts +13 -0
- package/dist/helpers/events.internal.js +88 -0
- package/dist/helpers/events.js +16 -17
- package/dist/helpers/herd_allowed_domains.d.ts +1 -3
- package/dist/helpers/herd_allowed_domains.js +2 -2
- package/dist/helpers/herd_allowed_domains_internal.d.ts +5 -0
- package/dist/helpers/herd_allowed_domains_internal.js +12 -0
- package/dist/helpers/herd_modules.queries.d.ts +3 -0
- package/dist/helpers/herd_modules.queries.js +106 -0
- package/dist/helpers/herd_roles.d.ts +12 -14
- package/dist/helpers/herd_roles.js +26 -34
- package/dist/helpers/herd_roles_internal.d.ts +18 -0
- package/dist/helpers/herd_roles_internal.js +159 -0
- package/dist/helpers/herd_scoped.queries.d.ts +7 -0
- package/dist/helpers/herd_scoped.queries.js +45 -0
- package/dist/helpers/herds.d.ts +2 -4
- package/dist/helpers/herds.js +11 -142
- package/dist/helpers/herds.queries.d.ts +5 -0
- package/dist/helpers/herds.queries.js +12 -0
- package/dist/helpers/index.d.ts +1 -0
- package/dist/helpers/index.js +1 -0
- package/dist/helpers/invitations.d.ts +4 -6
- package/dist/helpers/invitations.js +8 -8
- package/dist/helpers/invitations_internal.d.ts +10 -0
- package/dist/helpers/invitations_internal.js +63 -0
- package/dist/helpers/layers.d.ts +1 -3
- package/dist/helpers/layers.js +3 -18
- package/dist/helpers/layers.queries.d.ts +5 -0
- package/dist/helpers/layers.queries.js +20 -0
- package/dist/helpers/operating_contexts.d.ts +43 -0
- package/dist/helpers/operating_contexts.js +222 -0
- package/dist/helpers/plans.d.ts +1 -3
- package/dist/helpers/plans.js +3 -18
- package/dist/helpers/plans.queries.d.ts +5 -0
- package/dist/helpers/plans.queries.js +20 -0
- package/dist/helpers/providers.d.ts +1 -3
- package/dist/helpers/providers.js +3 -18
- package/dist/helpers/providers.queries.d.ts +5 -0
- package/dist/helpers/providers.queries.js +20 -0
- package/dist/helpers/pubsub_token_server.d.ts +1 -5
- package/dist/helpers/pubsub_token_server.js +2 -2
- package/dist/helpers/realtime_topic_access.d.ts +5 -0
- package/dist/helpers/realtime_topic_access.js +55 -0
- package/dist/helpers/session_summaries.d.ts +3 -4
- package/dist/helpers/session_summaries.js +13 -43
- package/dist/helpers/session_summaries.queries.d.ts +14 -0
- package/dist/helpers/session_summaries.queries.js +19 -0
- package/dist/helpers/sessions.d.ts +7 -8
- package/dist/helpers/sessions.js +23 -58
- package/dist/helpers/sessions.queries.d.ts +4 -0
- package/dist/helpers/sessions.queries.js +22 -0
- package/dist/helpers/storage.d.ts +2 -4
- package/dist/helpers/storage.js +7 -54
- package/dist/helpers/storage_internal.d.ts +4 -0
- package/dist/helpers/storage_internal.js +29 -0
- package/dist/helpers/tags.js +5 -5
- package/dist/helpers/users.d.ts +7 -8
- package/dist/helpers/users.js +13 -41
- package/dist/helpers/users.queries.d.ts +5 -0
- package/dist/helpers/users.queries.js +30 -0
- package/dist/helpers/versions_software_internal.d.ts +6 -0
- package/dist/helpers/versions_software_internal.js +53 -0
- package/dist/helpers/versions_software_server.d.ts +2 -3
- package/dist/helpers/versions_software_server.js +20 -18
- package/dist/hooks/index.d.ts +2 -1
- package/dist/hooks/index.js +2 -1
- package/dist/hooks/useAuthorizedRealtimeTopics.d.ts +1 -0
- package/dist/hooks/useAuthorizedRealtimeTopics.js +14 -0
- package/dist/hooks/useScoutRealtimeAnalysisJobs.d.ts +2 -1
- package/dist/hooks/useScoutRealtimeAnalysisJobs.js +3 -5
- package/dist/hooks/useScoutRealtimeAnalysisTasks.d.ts +2 -1
- package/dist/hooks/useScoutRealtimeAnalysisTasks.js +3 -5
- package/dist/hooks/useScoutRealtimeBroadcast.d.ts +9 -5
- package/dist/hooks/useScoutRealtimeBroadcast.js +118 -25
- package/dist/hooks/useScoutRealtimeConnectivity.d.ts +2 -1
- package/dist/hooks/useScoutRealtimeConnectivity.js +18 -76
- package/dist/hooks/useScoutRealtimeContacts.d.ts +2 -1
- package/dist/hooks/useScoutRealtimeContacts.js +3 -3
- package/dist/hooks/useScoutRealtimeDevices.d.ts +2 -1
- package/dist/hooks/useScoutRealtimeDevices.js +3 -64
- package/dist/hooks/useScoutRealtimeDocuments.d.ts +3 -3
- package/dist/hooks/useScoutRealtimeDocuments.js +7 -5
- package/dist/hooks/useScoutRealtimeEvents.d.ts +2 -1
- package/dist/hooks/useScoutRealtimeEvents.js +3 -69
- package/dist/hooks/useScoutRealtimeMaintenanceRequests.d.ts +2 -1
- package/dist/hooks/useScoutRealtimeMaintenanceRequests.js +3 -3
- package/dist/hooks/useScoutRealtimeOperatingContexts.d.ts +12 -0
- package/dist/hooks/useScoutRealtimeOperatingContexts.js +26 -0
- package/dist/hooks/useScoutRealtimeParts.d.ts +2 -1
- package/dist/hooks/useScoutRealtimeParts.js +3 -3
- package/dist/hooks/useScoutRealtimePins.d.ts +2 -1
- package/dist/hooks/useScoutRealtimePins.js +3 -69
- package/dist/hooks/useScoutRealtimePlans.d.ts +2 -1
- package/dist/hooks/useScoutRealtimePlans.js +3 -3
- package/dist/hooks/useScoutRealtimeSessionIncidents.d.ts +2 -1
- package/dist/hooks/useScoutRealtimeSessionIncidents.js +3 -3
- package/dist/hooks/useScoutRealtimeSessions.d.ts +2 -1
- package/dist/hooks/useScoutRealtimeSessions.js +3 -69
- package/dist/hooks/useScoutRealtimeTags.d.ts +2 -1
- package/dist/hooks/useScoutRealtimeTags.js +3 -69
- package/dist/hooks/useScoutRealtimeVersionsSoftware.d.ts +2 -1
- package/dist/hooks/useScoutRealtimeVersionsSoftware.js +3 -5
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/providers/ScoutRefreshProvider.d.ts +1 -0
- package/dist/providers/ScoutRefreshProvider.js +3 -0
- package/dist/supabase/server.d.ts +4 -1
- package/dist/supabase/server.js +6 -5
- package/dist/types/db.d.ts +82 -0
- package/dist/types/realtime.d.ts +1 -0
- package/dist/types/supabase.d.ts +952 -100
- package/dist/types/supabase.js +26 -1
- package/package.json +1 -1
package/dist/helpers/herds.js
CHANGED
|
@@ -1,20 +1,11 @@
|
|
|
1
1
|
"use server";
|
|
2
|
-
import { createHash } from "crypto";
|
|
3
2
|
import { newServerClient } from "../supabase/server";
|
|
4
3
|
import { EnumWebResponse, IWebResponse, } from "../types/requests";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
import { server_get_users_with_herd_access_batch } from "./users";
|
|
11
|
-
import { get_parts_by_herd_ids } from "./parts";
|
|
12
|
-
import { server_get_more_zones_and_actions_for_herd } from "./zones";
|
|
13
|
-
import { server_list_api_keys_batch } from "../api_keys/actions";
|
|
14
|
-
import { server_get_session_summaries_by_herd } from "./session_summaries";
|
|
15
|
-
import { server_get_session_usage_over_time_by_herd } from "./sessions";
|
|
16
|
-
export async function get_herds(client) {
|
|
17
|
-
const { data: herds } = await client.from("herds").select();
|
|
4
|
+
import { get_herds_with_location_query } from "./herds.queries";
|
|
5
|
+
import { load_herd_modules_query } from "./herd_modules.queries";
|
|
6
|
+
export async function get_herds() {
|
|
7
|
+
const supabase = await newServerClient();
|
|
8
|
+
const { data: herds } = await supabase.from("herds").select();
|
|
18
9
|
if (!herds) {
|
|
19
10
|
return {
|
|
20
11
|
status: EnumWebResponse.ERROR,
|
|
@@ -22,21 +13,10 @@ export async function get_herds(client) {
|
|
|
22
13
|
data: null,
|
|
23
14
|
};
|
|
24
15
|
}
|
|
25
|
-
|
|
26
|
-
let response = IWebResponse.success(herds);
|
|
27
|
-
return response.to_compatible();
|
|
28
|
-
}
|
|
16
|
+
return IWebResponse.success(herds).to_compatible();
|
|
29
17
|
}
|
|
30
|
-
export async function get_herds_with_location(
|
|
31
|
-
|
|
32
|
-
if (error) {
|
|
33
|
-
return {
|
|
34
|
-
status: EnumWebResponse.ERROR,
|
|
35
|
-
msg: error.message,
|
|
36
|
-
data: null,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
return IWebResponse.success(data ?? []).to_compatible();
|
|
18
|
+
export async function get_herds_with_location() {
|
|
19
|
+
return get_herds_with_location_query(await newServerClient());
|
|
40
20
|
}
|
|
41
21
|
export async function get_herd_by_slug(slug) {
|
|
42
22
|
const supabase = await newServerClient();
|
|
@@ -64,9 +44,7 @@ export async function deleteHerd(herd_id) {
|
|
|
64
44
|
data: null,
|
|
65
45
|
};
|
|
66
46
|
}
|
|
67
|
-
|
|
68
|
-
return IWebResponse.success(true).to_compatible();
|
|
69
|
-
}
|
|
47
|
+
return IWebResponse.success(true).to_compatible();
|
|
70
48
|
}
|
|
71
49
|
export async function createHerd(newHerd) {
|
|
72
50
|
const supabase = await newServerClient();
|
|
@@ -78,117 +56,8 @@ export async function createHerd(newHerd) {
|
|
|
78
56
|
data: null,
|
|
79
57
|
};
|
|
80
58
|
}
|
|
81
|
-
|
|
82
|
-
return IWebResponse.success(true).to_compatible();
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
// Stable hash of modules (queries return rows in a deterministic DB order), minus
|
|
86
|
-
// the per-fetch timestamp, so the client can skip no-op updates without a deep walk.
|
|
87
|
-
function hashHerdModules(modules) {
|
|
88
|
-
const stable = modules.map(({ timestamp_last_refreshed: _ts, ...rest }) => rest);
|
|
89
|
-
return createHash("sha1").update(JSON.stringify(stable)).digest("hex");
|
|
59
|
+
return IWebResponse.success(true).to_compatible();
|
|
90
60
|
}
|
|
91
61
|
export async function server_load_herd_modules() {
|
|
92
|
-
|
|
93
|
-
const client = await newServerClient();
|
|
94
|
-
const herdsResult = await get_herds_with_location(client);
|
|
95
|
-
if (herdsResult.status !== EnumWebResponse.SUCCESS || !herdsResult.data) {
|
|
96
|
-
return {
|
|
97
|
-
status: EnumWebResponse.ERROR,
|
|
98
|
-
msg: herdsResult.msg ?? "Failed to load herds",
|
|
99
|
-
data: null,
|
|
100
|
-
time_finished: Date.now(),
|
|
101
|
-
time_sent: Date.now(),
|
|
102
|
-
server_processing_time_ms: Date.now() - startTime,
|
|
103
|
-
content_hash: "",
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
const herds = herdsResult.data.filter((h) => h.id != null);
|
|
107
|
-
if (herds.length === 0) {
|
|
108
|
-
const endTime = Date.now();
|
|
109
|
-
console.log(`[server_load_herd_modules] No accessible herds (${endTime - startTime}ms)`);
|
|
110
|
-
return {
|
|
111
|
-
status: EnumWebResponse.SUCCESS,
|
|
112
|
-
msg: "No herds accessible",
|
|
113
|
-
data: [],
|
|
114
|
-
time_finished: endTime,
|
|
115
|
-
time_sent: endTime,
|
|
116
|
-
server_processing_time_ms: endTime - startTime,
|
|
117
|
-
content_hash: hashHerdModules([]),
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
const herdIds = herds.map((h) => h.id);
|
|
121
|
-
// Run a per-herd RPC across all herds in parallel, tolerating individual failures.
|
|
122
|
-
const perHerd = (fn) => Promise.all(herds.map((h) => fn(h.id).catch(() => ({
|
|
123
|
-
status: EnumWebResponse.ERROR,
|
|
124
|
-
msg: "",
|
|
125
|
-
data: null,
|
|
126
|
-
}))));
|
|
127
|
-
const grouped = (p) => p.then((r) => r.data ?? {}).catch(() => ({}));
|
|
128
|
-
const [plansByHerd, layersByHerd, providersByHerd, usersByHerd, partsByDevice, devicesResults, zonesResults, summariesResults, usageResults,] = await Promise.all([
|
|
129
|
-
grouped(server_get_plans_by_herd_ids(herdIds, client)),
|
|
130
|
-
grouped(server_get_layers_by_herd_ids(herdIds, client)),
|
|
131
|
-
grouped(server_get_providers_by_herd_ids(herdIds, client)),
|
|
132
|
-
server_get_users_with_herd_access_batch(herdIds, client)
|
|
133
|
-
.then((r) => (r.status === EnumWebResponse.SUCCESS ? r.data : null))
|
|
134
|
-
.catch(() => null),
|
|
135
|
-
grouped(get_parts_by_herd_ids(client, herdIds)),
|
|
136
|
-
perHerd((id) => get_devices_by_herd(id, client)),
|
|
137
|
-
perHerd((id) => server_get_more_zones_and_actions_for_herd(id, 0, 10, client)),
|
|
138
|
-
perHerd((id) => server_get_session_summaries_by_herd(id, client)),
|
|
139
|
-
perHerd((id) => server_get_session_usage_over_time_by_herd(id, client)),
|
|
140
|
-
]);
|
|
141
|
-
const devicesByHerdIndex = devicesResults.map((res) => res.status === EnumWebResponse.SUCCESS && res.data ? res.data : []);
|
|
142
|
-
const allDevices = devicesByHerdIndex.flat();
|
|
143
|
-
const allDeviceIds = allDevices.map((device) => device.id ?? 0);
|
|
144
|
-
let apiKeysByDevice = {};
|
|
145
|
-
if (allDeviceIds.length > 0) {
|
|
146
|
-
try {
|
|
147
|
-
apiKeysByDevice = await server_list_api_keys_batch(allDeviceIds, client);
|
|
148
|
-
}
|
|
149
|
-
catch (error) {
|
|
150
|
-
console.error(`[server_load_herd_modules] Failed to load API keys:`, error);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
for (const device of allDevices) {
|
|
154
|
-
const deviceId = device.id ?? 0;
|
|
155
|
-
device.api_keys_scout = apiKeysByDevice[deviceId] || [];
|
|
156
|
-
device.parts = partsByDevice[deviceId] || [];
|
|
157
|
-
}
|
|
158
|
-
const serialized_herd_modules = herds.map((herd, index) => {
|
|
159
|
-
const zonesRes = zonesResults[index];
|
|
160
|
-
const summariesRes = summariesResults[index];
|
|
161
|
-
const usageRes = usageResults[index];
|
|
162
|
-
return {
|
|
163
|
-
herd,
|
|
164
|
-
devices: devicesByHerdIndex[index],
|
|
165
|
-
timestamp_last_refreshed: Date.now(),
|
|
166
|
-
user_roles: usersByHerd ? usersByHerd[herd.id] ?? [] : null,
|
|
167
|
-
labels: LABELS,
|
|
168
|
-
plans: plansByHerd[herd.id] ?? [],
|
|
169
|
-
zones: zonesRes.status === EnumWebResponse.SUCCESS && zonesRes.data
|
|
170
|
-
? zonesRes.data
|
|
171
|
-
: [],
|
|
172
|
-
layers: layersByHerd[herd.id] ?? [],
|
|
173
|
-
providers: providersByHerd[herd.id] ?? [],
|
|
174
|
-
session_summaries: summariesRes.status === EnumWebResponse.SUCCESS && summariesRes.data
|
|
175
|
-
? summariesRes.data
|
|
176
|
-
: null,
|
|
177
|
-
session_usage: usageRes.status === EnumWebResponse.SUCCESS && usageRes.data
|
|
178
|
-
? usageRes.data
|
|
179
|
-
: null,
|
|
180
|
-
};
|
|
181
|
-
});
|
|
182
|
-
const endTime = Date.now();
|
|
183
|
-
const totalLoadTime = endTime - startTime;
|
|
184
|
-
console.log(`[server_load_herd_modules] Loaded ${herds.length} herds in ${totalLoadTime}ms (batched queries)`);
|
|
185
|
-
return {
|
|
186
|
-
status: EnumWebResponse.SUCCESS,
|
|
187
|
-
msg: "Herd modules loaded successfully",
|
|
188
|
-
data: serialized_herd_modules,
|
|
189
|
-
time_finished: endTime,
|
|
190
|
-
time_sent: endTime,
|
|
191
|
-
server_processing_time_ms: totalLoadTime,
|
|
192
|
-
content_hash: hashHerdModules(serialized_herd_modules),
|
|
193
|
-
};
|
|
62
|
+
return load_herd_modules_query(await newServerClient());
|
|
194
63
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { SupabaseClient } from "@supabase/supabase-js";
|
|
2
|
+
import { IHerdPrettyLocation } from "../types/db";
|
|
3
|
+
import { Database } from "../types/supabase";
|
|
4
|
+
import { IWebResponseCompatible } from "../types/requests";
|
|
5
|
+
export declare function get_herds_with_location_query(client: SupabaseClient<Database>): Promise<IWebResponseCompatible<IHerdPrettyLocation[]>>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { EnumWebResponse, IWebResponse, } from "../types/requests";
|
|
2
|
+
export async function get_herds_with_location_query(client) {
|
|
3
|
+
const { data, error } = await client.rpc("get_herds_with_location");
|
|
4
|
+
if (error) {
|
|
5
|
+
return {
|
|
6
|
+
status: EnumWebResponse.ERROR,
|
|
7
|
+
msg: error.message,
|
|
8
|
+
data: null,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
return IWebResponse.success(data ?? []).to_compatible();
|
|
12
|
+
}
|
package/dist/helpers/index.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ export * from "./documents";
|
|
|
26
26
|
export * from "./maintenance_requests";
|
|
27
27
|
export * from "./session_incidents";
|
|
28
28
|
export * from "./contacts";
|
|
29
|
+
export * from "./operating_contexts";
|
|
29
30
|
export * from "./plans";
|
|
30
31
|
export * from "./sessions";
|
|
31
32
|
export * from "./segmentations_sam3";
|
package/dist/helpers/index.js
CHANGED
|
@@ -26,6 +26,7 @@ export * from "./documents";
|
|
|
26
26
|
export * from "./maintenance_requests";
|
|
27
27
|
export * from "./session_incidents";
|
|
28
28
|
export * from "./contacts";
|
|
29
|
+
export * from "./operating_contexts";
|
|
29
30
|
export * from "./plans";
|
|
30
31
|
export * from "./sessions";
|
|
31
32
|
export * from "./segmentations_sam3";
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { Database } from "../types/supabase";
|
|
2
1
|
import { IHerdInvitation, IHerdInvitationWithHerdSlug } from "../types/db";
|
|
3
2
|
import { IWebResponseCompatible } from "../types/requests";
|
|
4
|
-
import { SupabaseClient } from "@supabase/supabase-js";
|
|
5
3
|
export declare function server_create_herd_invitation(herd_id: number, email: string, herd_role_id: number, expires_at?: string | null): Promise<IWebResponseCompatible<IHerdInvitation | null>>;
|
|
6
|
-
export declare function accept_herd_invitations_for_current_user(invitation_ids: number[]
|
|
4
|
+
export declare function accept_herd_invitations_for_current_user(invitation_ids: number[]): Promise<IWebResponseCompatible<IHerdInvitation[]>>;
|
|
7
5
|
export declare function server_get_herd_invitations_for_current_user(): Promise<IWebResponseCompatible<IHerdInvitationWithHerdSlug[]>>;
|
|
8
|
-
export declare function server_get_herd_invitations_by_herd(herd_id: number
|
|
9
|
-
export declare function reject_herd_invitations_for_current_user(invitation_ids: number[]
|
|
10
|
-
export declare function server_revoke_herd_invitations(invitation_ids: number[]
|
|
6
|
+
export declare function server_get_herd_invitations_by_herd(herd_id: number): Promise<IWebResponseCompatible<IHerdInvitation[]>>;
|
|
7
|
+
export declare function reject_herd_invitations_for_current_user(invitation_ids: number[]): Promise<IWebResponseCompatible<IHerdInvitation[]>>;
|
|
8
|
+
export declare function server_revoke_herd_invitations(invitation_ids: number[]): Promise<IWebResponseCompatible<IHerdInvitation[]>>;
|
|
@@ -14,11 +14,11 @@ export async function server_create_herd_invitation(herd_id, email, herd_role_id
|
|
|
14
14
|
}
|
|
15
15
|
return IWebResponse.success(data).to_compatible();
|
|
16
16
|
}
|
|
17
|
-
export async function accept_herd_invitations_for_current_user(invitation_ids
|
|
17
|
+
export async function accept_herd_invitations_for_current_user(invitation_ids) {
|
|
18
18
|
if (invitation_ids.length === 0) {
|
|
19
19
|
return IWebResponse.error("At least one invitation id is required").to_compatible();
|
|
20
20
|
}
|
|
21
|
-
const supabase =
|
|
21
|
+
const supabase = await newServerClient();
|
|
22
22
|
const { data, error } = await supabase.rpc("accept_herd_invitations_for_current_user", { p_invitation_ids: invitation_ids });
|
|
23
23
|
if (error) {
|
|
24
24
|
return IWebResponse.error(error.message).to_compatible();
|
|
@@ -33,8 +33,8 @@ export async function server_get_herd_invitations_for_current_user() {
|
|
|
33
33
|
}
|
|
34
34
|
return IWebResponse.success(data ?? []).to_compatible();
|
|
35
35
|
}
|
|
36
|
-
export async function server_get_herd_invitations_by_herd(herd_id
|
|
37
|
-
const supabase =
|
|
36
|
+
export async function server_get_herd_invitations_by_herd(herd_id) {
|
|
37
|
+
const supabase = await newServerClient();
|
|
38
38
|
const { data, error } = await supabase
|
|
39
39
|
.from("herd_invitations")
|
|
40
40
|
.select("*")
|
|
@@ -45,22 +45,22 @@ export async function server_get_herd_invitations_by_herd(herd_id, supabaseClien
|
|
|
45
45
|
}
|
|
46
46
|
return IWebResponse.success(data ?? []).to_compatible();
|
|
47
47
|
}
|
|
48
|
-
export async function reject_herd_invitations_for_current_user(invitation_ids
|
|
48
|
+
export async function reject_herd_invitations_for_current_user(invitation_ids) {
|
|
49
49
|
if (invitation_ids.length === 0) {
|
|
50
50
|
return IWebResponse.error("At least one invitation id is required").to_compatible();
|
|
51
51
|
}
|
|
52
|
-
const supabase =
|
|
52
|
+
const supabase = await newServerClient();
|
|
53
53
|
const { data, error } = await supabase.rpc("reject_herd_invitations_for_current_user", { p_invitation_ids: invitation_ids });
|
|
54
54
|
if (error) {
|
|
55
55
|
return IWebResponse.error(error.message).to_compatible();
|
|
56
56
|
}
|
|
57
57
|
return IWebResponse.success(data ?? []).to_compatible();
|
|
58
58
|
}
|
|
59
|
-
export async function server_revoke_herd_invitations(invitation_ids
|
|
59
|
+
export async function server_revoke_herd_invitations(invitation_ids) {
|
|
60
60
|
if (invitation_ids.length === 0) {
|
|
61
61
|
return IWebResponse.error("At least one invitation id is required").to_compatible();
|
|
62
62
|
}
|
|
63
|
-
const supabase =
|
|
63
|
+
const supabase = await newServerClient();
|
|
64
64
|
const { data, error } = await supabase.rpc("revoke_herd_invitations", {
|
|
65
65
|
p_invitation_ids: invitation_ids,
|
|
66
66
|
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SupabaseClient } from "@supabase/supabase-js";
|
|
2
|
+
import { IHerdInvitation, IHerdInvitationWithHerdSlug } from "../types/db";
|
|
3
|
+
import { IWebResponseCompatible } from "../types/requests";
|
|
4
|
+
import { Database } from "../types/supabase";
|
|
5
|
+
export declare function createHerdInvitationWithClient(supabase: SupabaseClient<Database>, herd_id: number, email: string, herd_role_id: number, expires_at?: string | null): Promise<IWebResponseCompatible<IHerdInvitation | null>>;
|
|
6
|
+
export declare function acceptHerdInvitationsWithClient(supabase: SupabaseClient<Database>, invitation_ids: number[]): Promise<IWebResponseCompatible<IHerdInvitation[]>>;
|
|
7
|
+
export declare function getHerdInvitationsForCurrentUserWithClient(supabase: SupabaseClient<Database>): Promise<IWebResponseCompatible<IHerdInvitationWithHerdSlug[]>>;
|
|
8
|
+
export declare function getHerdInvitationsByHerdWithClient(supabase: SupabaseClient<Database>, herd_id: number): Promise<IWebResponseCompatible<IHerdInvitation[]>>;
|
|
9
|
+
export declare function rejectHerdInvitationsWithClient(supabase: SupabaseClient<Database>, invitation_ids: number[]): Promise<IWebResponseCompatible<IHerdInvitation[]>>;
|
|
10
|
+
export declare function revokeHerdInvitationsWithClient(supabase: SupabaseClient<Database>, invitation_ids: number[]): Promise<IWebResponseCompatible<IHerdInvitation[]>>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { IWebResponse } from "../types/requests";
|
|
2
|
+
export async function createHerdInvitationWithClient(supabase, herd_id, email, herd_role_id, expires_at) {
|
|
3
|
+
const { data, error } = await supabase.rpc("create_herd_invitation", {
|
|
4
|
+
p_herd_id: herd_id,
|
|
5
|
+
p_email: email,
|
|
6
|
+
p_herd_role_id: herd_role_id,
|
|
7
|
+
p_expires_at: expires_at ?? undefined,
|
|
8
|
+
});
|
|
9
|
+
if (error) {
|
|
10
|
+
return IWebResponse.error(error.message).to_compatible();
|
|
11
|
+
}
|
|
12
|
+
return IWebResponse.success(data).to_compatible();
|
|
13
|
+
}
|
|
14
|
+
export async function acceptHerdInvitationsWithClient(supabase, invitation_ids) {
|
|
15
|
+
if (invitation_ids.length === 0) {
|
|
16
|
+
return IWebResponse.error("At least one invitation id is required").to_compatible();
|
|
17
|
+
}
|
|
18
|
+
const { data, error } = await supabase.rpc("accept_herd_invitations_for_current_user", { p_invitation_ids: invitation_ids });
|
|
19
|
+
if (error) {
|
|
20
|
+
return IWebResponse.error(error.message).to_compatible();
|
|
21
|
+
}
|
|
22
|
+
return IWebResponse.success(data ?? []).to_compatible();
|
|
23
|
+
}
|
|
24
|
+
export async function getHerdInvitationsForCurrentUserWithClient(supabase) {
|
|
25
|
+
const { data, error } = await supabase.rpc("get_herd_invitations_for_current_user");
|
|
26
|
+
if (error) {
|
|
27
|
+
return IWebResponse.error(error.message).to_compatible();
|
|
28
|
+
}
|
|
29
|
+
return IWebResponse.success(data ?? []).to_compatible();
|
|
30
|
+
}
|
|
31
|
+
export async function getHerdInvitationsByHerdWithClient(supabase, herd_id) {
|
|
32
|
+
const { data, error } = await supabase
|
|
33
|
+
.from("herd_invitations")
|
|
34
|
+
.select("*")
|
|
35
|
+
.eq("herd_id", herd_id)
|
|
36
|
+
.order("created_at", { ascending: false });
|
|
37
|
+
if (error) {
|
|
38
|
+
return IWebResponse.error(error.message).to_compatible();
|
|
39
|
+
}
|
|
40
|
+
return IWebResponse.success(data ?? []).to_compatible();
|
|
41
|
+
}
|
|
42
|
+
export async function rejectHerdInvitationsWithClient(supabase, invitation_ids) {
|
|
43
|
+
if (invitation_ids.length === 0) {
|
|
44
|
+
return IWebResponse.error("At least one invitation id is required").to_compatible();
|
|
45
|
+
}
|
|
46
|
+
const { data, error } = await supabase.rpc("reject_herd_invitations_for_current_user", { p_invitation_ids: invitation_ids });
|
|
47
|
+
if (error) {
|
|
48
|
+
return IWebResponse.error(error.message).to_compatible();
|
|
49
|
+
}
|
|
50
|
+
return IWebResponse.success(data ?? []).to_compatible();
|
|
51
|
+
}
|
|
52
|
+
export async function revokeHerdInvitationsWithClient(supabase, invitation_ids) {
|
|
53
|
+
if (invitation_ids.length === 0) {
|
|
54
|
+
return IWebResponse.error("At least one invitation id is required").to_compatible();
|
|
55
|
+
}
|
|
56
|
+
const { data, error } = await supabase.rpc("revoke_herd_invitations", {
|
|
57
|
+
p_invitation_ids: invitation_ids,
|
|
58
|
+
});
|
|
59
|
+
if (error) {
|
|
60
|
+
return IWebResponse.error(error.message).to_compatible();
|
|
61
|
+
}
|
|
62
|
+
return IWebResponse.success(data ?? []).to_compatible();
|
|
63
|
+
}
|
package/dist/helpers/layers.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { Database } from "../types/supabase";
|
|
2
1
|
import { ILayer } from "../types/db";
|
|
3
2
|
import { IWebResponseCompatible } from "../types/requests";
|
|
4
|
-
import { SupabaseClient } from "@supabase/supabase-js";
|
|
5
3
|
export declare function server_get_layers_by_herd(herd_id: number): Promise<IWebResponseCompatible<ILayer[]>>;
|
|
6
|
-
export declare function server_get_layers_by_herd_ids(herd_ids: number[]
|
|
4
|
+
export declare function server_get_layers_by_herd_ids(herd_ids: number[]): Promise<IWebResponseCompatible<Record<number, ILayer[]>>>;
|
package/dist/helpers/layers.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use server";
|
|
2
2
|
import { newServerClient } from "../supabase/server";
|
|
3
3
|
import { EnumWebResponse, IWebResponse, } from "../types/requests";
|
|
4
|
+
import { get_layers_by_herd_ids_query } from "./herd_scoped.queries";
|
|
4
5
|
// function that fetches the layers from our db given a herd id
|
|
5
6
|
export async function server_get_layers_by_herd(herd_id) {
|
|
6
7
|
const supabase = await newServerClient();
|
|
@@ -20,22 +21,6 @@ export async function server_get_layers_by_herd(herd_id) {
|
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
// Fetches layers for many herds in one query, grouped by herd_id.
|
|
23
|
-
export async function server_get_layers_by_herd_ids(herd_ids
|
|
24
|
-
|
|
25
|
-
if (herd_ids.length === 0) {
|
|
26
|
-
return IWebResponse.success({}).to_compatible();
|
|
27
|
-
}
|
|
28
|
-
const { data, error } = await client
|
|
29
|
-
.from("layers")
|
|
30
|
-
.select("*")
|
|
31
|
-
.in("herd_id", herd_ids)
|
|
32
|
-
.order("id", { ascending: true });
|
|
33
|
-
if (error) {
|
|
34
|
-
return { status: EnumWebResponse.ERROR, msg: error.message, data: null };
|
|
35
|
-
}
|
|
36
|
-
const grouped = {};
|
|
37
|
-
for (const row of data ?? []) {
|
|
38
|
-
(grouped[_a = row.herd_id] ?? (grouped[_a] = [])).push(row);
|
|
39
|
-
}
|
|
40
|
-
return IWebResponse.success(grouped).to_compatible();
|
|
24
|
+
export async function server_get_layers_by_herd_ids(herd_ids) {
|
|
25
|
+
return get_layers_by_herd_ids_query(await newServerClient(), herd_ids);
|
|
41
26
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { SupabaseClient } from "@supabase/supabase-js";
|
|
2
|
+
import { ILayer } from "../types/db";
|
|
3
|
+
import { Database } from "../types/supabase";
|
|
4
|
+
import { IWebResponseCompatible } from "../types/requests";
|
|
5
|
+
export declare function get_layers_by_herd_ids_query(client: SupabaseClient<Database>, herd_ids: number[]): Promise<IWebResponseCompatible<Record<number, ILayer[]>>>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { EnumWebResponse, IWebResponse, } from "../types/requests";
|
|
2
|
+
export async function get_layers_by_herd_ids_query(client, herd_ids) {
|
|
3
|
+
var _a;
|
|
4
|
+
if (herd_ids.length === 0) {
|
|
5
|
+
return IWebResponse.success({}).to_compatible();
|
|
6
|
+
}
|
|
7
|
+
const { data, error } = await client
|
|
8
|
+
.from("layers")
|
|
9
|
+
.select("*")
|
|
10
|
+
.in("herd_id", herd_ids)
|
|
11
|
+
.order("id", { ascending: true });
|
|
12
|
+
if (error) {
|
|
13
|
+
return { status: EnumWebResponse.ERROR, msg: error.message, data: null };
|
|
14
|
+
}
|
|
15
|
+
const grouped = {};
|
|
16
|
+
for (const row of data ?? []) {
|
|
17
|
+
(grouped[_a = row.herd_id] ?? (grouped[_a] = [])).push(row);
|
|
18
|
+
}
|
|
19
|
+
return IWebResponse.success(grouped).to_compatible();
|
|
20
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
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";
|
|
2
|
+
import { IWebResponseCompatible } from "../types/requests";
|
|
3
|
+
export declare function server_get_document_conditions_by_localization(localization_id: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IDocumentCondition[]>>;
|
|
4
|
+
export declare function server_create_document_condition(row: DocumentConditionCreateInput): Promise<IWebResponseCompatible<IDocumentCondition | null>>;
|
|
5
|
+
export declare function server_update_document_condition(id: number, updates: DocumentConditionUpdateInput): Promise<IWebResponseCompatible<IDocumentCondition | null>>;
|
|
6
|
+
export declare function server_get_operating_context_types_by_localization(localization_id: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContextType[]>>;
|
|
7
|
+
export declare function server_create_operating_context_type(row: OperatingContextTypeCreateInput): Promise<IWebResponseCompatible<IOperatingContextType | null>>;
|
|
8
|
+
export declare function server_update_operating_context_type(id: number, updates: OperatingContextTypeUpdateInput): Promise<IWebResponseCompatible<IOperatingContextType | null>>;
|
|
9
|
+
export declare function server_get_operating_context_roles_by_localization(localization_id: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContextRole[]>>;
|
|
10
|
+
export declare function server_create_operating_context_role(row: OperatingContextRoleCreateInput): Promise<IWebResponseCompatible<IOperatingContextRole | null>>;
|
|
11
|
+
export declare function server_update_operating_context_role(id: number, updates: OperatingContextRoleUpdateInput): Promise<IWebResponseCompatible<IOperatingContextRole | null>>;
|
|
12
|
+
export declare function server_get_operating_context_equipment_categories_by_localization(localization_id: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContextEquipmentCategory[]>>;
|
|
13
|
+
export declare function server_create_operating_context_equipment_category(row: OperatingContextEquipmentCategoryCreateInput): Promise<IWebResponseCompatible<IOperatingContextEquipmentCategory | null>>;
|
|
14
|
+
export declare function server_update_operating_context_equipment_category(id: number, updates: OperatingContextEquipmentCategoryUpdateInput): Promise<IWebResponseCompatible<IOperatingContextEquipmentCategory | null>>;
|
|
15
|
+
export declare function server_get_operating_context_equipment_items_by_category(equipment_category_id: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContextEquipmentItem[]>>;
|
|
16
|
+
export declare function server_create_operating_context_equipment_item(row: OperatingContextEquipmentItemCreateInput): Promise<IWebResponseCompatible<IOperatingContextEquipmentItem | null>>;
|
|
17
|
+
export declare function server_update_operating_context_equipment_item(id: number, updates: OperatingContextEquipmentItemUpdateInput): Promise<IWebResponseCompatible<IOperatingContextEquipmentItem | null>>;
|
|
18
|
+
export declare function server_get_operating_contexts_by_herd(herd_id: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContext[]>>;
|
|
19
|
+
export declare function server_get_operating_context_by_id(id: number): Promise<IWebResponseCompatible<IOperatingContext | null>>;
|
|
20
|
+
export declare function server_create_operating_context(row: OperatingContextCreateInput): Promise<IWebResponseCompatible<IOperatingContext | null>>;
|
|
21
|
+
export declare function server_update_operating_context(id: number, updates: OperatingContextUpdateInput): Promise<IWebResponseCompatible<IOperatingContext | null>>;
|
|
22
|
+
export declare function server_get_operating_context_payloads_by_operating_context(operating_context_id: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContextPayload[]>>;
|
|
23
|
+
export declare function server_create_operating_context_payload(row: OperatingContextPayloadCreateInput): Promise<IWebResponseCompatible<IOperatingContextPayload | null>>;
|
|
24
|
+
export declare function server_update_operating_context_payload(id: number, updates: OperatingContextPayloadUpdateInput): Promise<IWebResponseCompatible<IOperatingContextPayload | null>>;
|
|
25
|
+
export declare function server_get_operating_context_role_assignments_by_operating_context(operating_context_id: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContextRoleAssignment[]>>;
|
|
26
|
+
export declare function server_create_operating_context_role_assignment(row: OperatingContextRoleAssignmentCreateInput): Promise<IWebResponseCompatible<IOperatingContextRoleAssignment | null>>;
|
|
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_equipment_requirements_by_operating_context(operating_context_id: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContextEquipmentRequirement[]>>;
|
|
29
|
+
export declare function server_create_operating_context_equipment_requirement(row: OperatingContextEquipmentRequirementCreateInput): Promise<IWebResponseCompatible<IOperatingContextEquipmentRequirement | null>>;
|
|
30
|
+
export declare function server_update_operating_context_equipment_requirement(id: number, updates: OperatingContextEquipmentRequirementUpdateInput): Promise<IWebResponseCompatible<IOperatingContextEquipmentRequirement | null>>;
|
|
31
|
+
export declare function server_get_operating_context_regions_by_operating_context(operating_context_id: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContextRegion[]>>;
|
|
32
|
+
export declare function server_create_operating_context_region(row: OperatingContextRegionCreateInput): Promise<IWebResponseCompatible<IOperatingContextRegion | null>>;
|
|
33
|
+
export declare function server_update_operating_context_region(id: number, updates: OperatingContextRegionUpdateInput): Promise<IWebResponseCompatible<IOperatingContextRegion | null>>;
|
|
34
|
+
export declare function server_get_operating_context_risks_by_operating_context(operating_context_id: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContextRisk[]>>;
|
|
35
|
+
export declare function server_create_operating_context_risk(row: OperatingContextRiskCreateInput): Promise<IWebResponseCompatible<IOperatingContextRisk | null>>;
|
|
36
|
+
export declare function server_update_operating_context_risk(id: number, updates: OperatingContextRiskUpdateInput): Promise<IWebResponseCompatible<IOperatingContextRisk | null>>;
|
|
37
|
+
export declare function server_get_operating_context_weather_snapshots(operating_context_id: number, options?: {
|
|
38
|
+
limit?: number;
|
|
39
|
+
cursor?: {
|
|
40
|
+
collected_at: string;
|
|
41
|
+
id: number;
|
|
42
|
+
};
|
|
43
|
+
}): Promise<IWebResponseCompatible<IOperatingContextWeatherSnapshot[]>>;
|