89 lines
3.0 KiB
TypeScript
89 lines
3.0 KiB
TypeScript
import { getDeviceController } from "@pkg/logic/domains/device/controller";
|
|
import { createDeviceSchema, updateDeviceSchema } from "@pkg/logic/domains/device/data";
|
|
import { getFlowExecCtxForRemoteFuncs, unauthorized } from "$lib/core/server.utils";
|
|
import { command, getRequestEvent, query } from "$app/server";
|
|
import * as v from "valibot";
|
|
|
|
const dc = getDeviceController();
|
|
|
|
export const listDevicesSQ = query(async () => {
|
|
const event = getRequestEvent();
|
|
const fctx = await getFlowExecCtxForRemoteFuncs(event.locals);
|
|
if (!fctx.userId) return unauthorized(fctx);
|
|
|
|
const res = await dc.list(fctx);
|
|
return res.isOk()
|
|
? { data: res.value, error: null }
|
|
: { data: null, error: res.error };
|
|
});
|
|
|
|
export const getDeviceByIdSQ = query(
|
|
v.object({ id: v.number() }),
|
|
async (input) => {
|
|
const event = getRequestEvent();
|
|
const fctx = await getFlowExecCtxForRemoteFuncs(event.locals);
|
|
if (!fctx.userId) return unauthorized(fctx);
|
|
|
|
const res = await dc.getById(fctx, input.id);
|
|
return res.isOk()
|
|
? { data: res.value, error: null }
|
|
: { data: null, error: res.error };
|
|
},
|
|
);
|
|
|
|
export const createDeviceSC = command(createDeviceSchema, async (payload) => {
|
|
const event = getRequestEvent();
|
|
const fctx = await getFlowExecCtxForRemoteFuncs(event.locals);
|
|
if (!fctx.userId) return unauthorized(fctx);
|
|
|
|
const res = await dc.create(fctx, payload);
|
|
return res.isOk()
|
|
? { data: res.value, error: null }
|
|
: { data: null, error: res.error };
|
|
});
|
|
|
|
export const updateDeviceSC = command(
|
|
v.object({ id: v.number(), data: updateDeviceSchema }),
|
|
async (payload) => {
|
|
const event = getRequestEvent();
|
|
const fctx = await getFlowExecCtxForRemoteFuncs(event.locals);
|
|
if (!fctx.userId) return unauthorized(fctx);
|
|
|
|
const res = await dc.update(fctx, payload.id, payload.data);
|
|
return res.isOk()
|
|
? { data: res.value, error: null }
|
|
: { data: null, error: res.error };
|
|
},
|
|
);
|
|
|
|
export const deleteDeviceSC = command(
|
|
v.object({ id: v.number() }),
|
|
async (payload) => {
|
|
const event = getRequestEvent();
|
|
const fctx = await getFlowExecCtxForRemoteFuncs(event.locals);
|
|
if (!fctx.userId) return unauthorized(fctx);
|
|
|
|
const res = await dc.delete(fctx, payload.id);
|
|
return res.isOk()
|
|
? { data: res.value, error: null }
|
|
: { data: null, error: res.error };
|
|
},
|
|
);
|
|
|
|
export const setDeviceStatusSC = command(
|
|
v.object({
|
|
id: v.number(),
|
|
status: v.picklist(["online", "offline", "busy", "error"]),
|
|
}),
|
|
async (payload) => {
|
|
const event = getRequestEvent();
|
|
const fctx = await getFlowExecCtxForRemoteFuncs(event.locals);
|
|
if (!fctx.userId) return unauthorized(fctx);
|
|
|
|
const res = await dc.setStatus(fctx, payload.id, payload.status as any);
|
|
return res.isOk()
|
|
? { data: res.value, error: null }
|
|
: { data: null, error: res.error };
|
|
},
|
|
);
|