import { Effect } from 'effect' import type { AppContext } from '@voltro/runtime' import { StorageService } from '@voltro/plugin-storage' const execute = (input: { bytesBase64: string; contentType: 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: 'public', ownerId: ctx.request.subject.id, tenantId: ctx.request.subject.tenantId, key: `avatars/${ctx.request.subject.id ?? 'anon'}/avatar`, }) const url = yield* storage.getUrl(ref.id) return { id: ref.id, url } }) export default execute