MCPcopy Create free account
hub / github.com/bearlyai/OpenADE / createOpenADEYjsWriter

Function createOpenADEYjsWriter

projects/openade-module/src/yjsMutation.ts:427–1081  ·  view source on GitHub ↗
(storage: OpenADEYjsMutationStorageAdapter, options: OpenADEYjsWriterOptions = {})

Source from the content-addressed store, hash-verified

425}
426
427export function createOpenADEYjsWriter(storage: OpenADEYjsMutationStorageAdapter, options: OpenADEYjsWriterOptions = {}): OpenADEYjsWriter {
428 const createId = options.createId ?? createFallbackId
429 const createSlug = options.createSlug ?? createFallbackSlug
430 const now = options.now ?? (() => new Date().toISOString())
431
432 return {
433 async createRepo(request) {
434 const repoId = request.repoId ?? createId()
435 const createdAt = request.createdAt ?? now()
436 const reposDoc = await loadDoc(storage, "code:repos")
437
438 try {
439 if (findRepoMap(reposDoc, repoId)) {
440 return { repoId, createdAt }
441 }
442
443 reposDoc.transact(() => {
444 pushOrderedItem(reposDoc, "repos", {
445 id: repoId,
446 name: request.name,
447 path: request.path,
448 createdBy: request.createdBy,
449 createdAt,
450 updatedAt: createdAt,
451 tasks: [],
452 })
453 })
454 await saveDoc(storage, "code:repos", reposDoc)
455 return { repoId, createdAt }
456 } finally {
457 reposDoc.destroy()
458 }
459 },
460
461 async updateRepo(request) {
462 const updatedAt = request.updatedAt ?? now()
463 const reposDoc = await loadDoc(storage, "code:repos")
464
465 try {
466 const repoMap = findRepoMap(reposDoc, request.repoId)
467 if (!repoMap) throw new Error(`Repository ${request.repoId} not found`)
468
469 reposDoc.transact(() => {
470 if (request.name !== undefined) repoMap.set("name", request.name)
471 if (request.path !== undefined) repoMap.set("path", request.path)
472 if (request.archived !== undefined) repoMap.set("archived", request.archived)
473 repoMap.set("updatedAt", updatedAt)
474 })
475 await saveDoc(storage, "code:repos", reposDoc)
476 } finally {
477 reposDoc.destroy()
478 }
479 },
480
481 async deleteRepo(request) {
482 const reposDoc = await loadDoc(storage, "code:repos")
483
484 try {

Calls

no outgoing calls

Tested by

no test coverage detected