import { Effect } from 'effect' import type { AppContext } from '@voltro/runtime' import { StorageService } from '@voltro/plugin-storage' const execute = (input: { bytesBase64: string; contentType: string; filename: string }, ctx: AppContext) => Effect.gen(function* () { const storage = yield* StorageService const bytes = new Uint8Array(Buffer.from(input.bytesBase64, 'base64')) const ref = yield* storage.put({ bytes, contentType: input.contentType, visibility: 'private', ownerId: ctx.request.subject.id, tenantId: ctx.request.subject.tenantId, key: `documents/${ctx.request.subject.id ?? 'anon'}/${input.filename}`, access: [{ roles: ['admin'] }, { tenant: true }], }) return { id: ref.id } }) export default execute