backend/source/services/resource.ts
Fenris Wolf a17b7dd785 [fix]
2024-09-25 15:28:25 +02:00

94 lines
2.2 KiB
TypeScript

namespace _zeitbild.service.resource
{
/**
*/
export function add(
resource_object : _zeitbild.type_resource_object
) : Promise<_zeitbild.type_resource_id>
{
return _zeitbild.repository.resource.create(resource_object);
}
/**
*/
export async function event_add(
resource_id : _zeitbild.type_resource_id,
event_object : _zeitbild.type_event_object
) : Promise<void>
{
const resource_object : _zeitbild.type_resource_object = await _zeitbild.repository.resource.read(
resource_id
);
switch (resource_object.kind) {
case "local": {
const event_id : _zeitbild.type_event_id = await _zeitbild.repository.local_resource_event.create(
event_object
);
await _zeitbild.repository.resource.local_resource_event_add(
resource_id,
event_id
);
return Promise.resolve<void>(undefined);
break;
}
case "caldav": {
if (resource_object.data.read_only) {
return Promise.reject(new Error("can not add event to read only caldav resource"));
}
else {
// TODO
return Promise.reject(new Error("not implemented"));
}
break;
}
default: {
// @ts-ignore
throw (new Error("unhandled resource kind: " + resource_object.kind));
}
}
}
/**
*/
export async function event_remove(
resource_id : _zeitbild.type_resource_id,
event_object : _zeitbild.type_event_object
) : Promise<void>
{
const resource_object : _zeitbild.type_resource_object = await _zeitbild.repository.resource.read(
resource_id
);
switch (resource_object.kind) {
case "local": {
const event_id : _zeitbild.type_event_id = await _zeitbild.repository.local_resource_event.create(
event_object
);
await _zeitbild.repository.resource.local_resource_event_delete(
resource_id,
event_id
);
return Promise.resolve<void>(undefined);
break;
}
case "caldav": {
if (resource_object.data.read_only) {
return Promise.reject(new Error("can not delete event from read only caldav resource"));
}
else {
// TODO
return Promise.reject(new Error("not implemented"));
}
break;
}
default: {
// @ts-ignore
throw (new Error("unhandled resource kind: " + resource_object.kind));
}
}
}
}