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_get( resource_id : _zeitbild.type_resource_id, local_resource_event_id : _zeitbild.type_local_resource_event_id ) : Promise<_zeitbild.type_event_object> { const resource_object : _zeitbild.type_resource_object = await _zeitbild.repository.resource.read( resource_id ); switch (resource_object.kind) { case "local": { const event_object : _zeitbild.type_event_object = await _zeitbild.repository.resource.local_resource_event_read( resource_id, local_resource_event_id ); return Promise.resolve<_zeitbild.type_event_object>(event_object); break; } case "caldav": { // 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_add( resource_id : _zeitbild.type_resource_id, event_object : _zeitbild.type_event_object ) : Promise<_zeitbild.type_local_resource_event_id> { const resource_object : _zeitbild.type_resource_object = await _zeitbild.repository.resource.read( resource_id ); switch (resource_object.kind) { case "local": { const local_resource_event_id : _zeitbild.type_local_resource_event_id = await _zeitbild.repository.resource.local_resource_event_create( resource_id, event_object ); return Promise.resolve<_zeitbild.type_local_resource_event_id>(local_resource_event_id); 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_change( resource_id : _zeitbild.type_resource_id, local_resource_event_id : _zeitbild.type_local_resource_event_id, event_object : _zeitbild.type_event_object ) : Promise { const resource_object : _zeitbild.type_resource_object = await _zeitbild.repository.resource.read( resource_id ); switch (resource_object.kind) { case "local": { await _zeitbild.repository.resource.local_resource_event_update( resource_id, local_resource_event_id, event_object ); return Promise.resolve(undefined); break; } case "caldav": { if (resource_object.data.read_only) { return Promise.reject(new Error("can not change event of 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, local_resource_event_id : _zeitbild.type_local_resource_event_id ) : Promise { const resource_object : _zeitbild.type_resource_object = await _zeitbild.repository.resource.read( resource_id ); switch (resource_object.kind) { case "local": { await _zeitbild.repository.resource.local_resource_event_delete( resource_id, local_resource_event_id ); return Promise.resolve(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)); } } } }