import { IsoDateTime, OrchestrationProposedPlanId, ThreadId, TrimmedNonEmptyString, TurnId,} from "@t3tools/contracts";import { Schema, Context } from "effect";import type { Effect } from "effect"; import type { ProjectionRepositoryError } from "../Errors.ts"; export const ProjectionThreadProposedPlan = Schema.Struct({ planId: OrchestrationProposedPlanId, threadId: ThreadId, turnId: Schema.NullOr(TurnId), planMarkdown: TrimmedNonEmptyString, implementedAt: Schema.NullOr(IsoDateTime), implementationThreadId: Schema.NullOr(ThreadId), createdAt: IsoDateTime, updatedAt: IsoDateTime,});export type ProjectionThreadProposedPlan = typeof ProjectionThreadProposedPlan.Type; export const ListProjectionThreadProposedPlansInput = Schema.Struct({ threadId: ThreadId,});export type ListProjectionThreadProposedPlansInput = typeof ListProjectionThreadProposedPlansInput.Type; export const DeleteProjectionThreadProposedPlansInput = Schema.Struct({ threadId: ThreadId,});export type DeleteProjectionThreadProposedPlansInput = typeof DeleteProjectionThreadProposedPlansInput.Type; export interface ProjectionThreadProposedPlanRepositoryShape { readonly upsert: ( proposedPlan: ProjectionThreadProposedPlan, ) => Effect.Effect<void, ProjectionRepositoryError>; readonly listByThreadId: ( input: ListProjectionThreadProposedPlansInput, ) => Effect.Effect<ReadonlyArray<ProjectionThreadProposedPlan>, ProjectionRepositoryError>; readonly deleteByThreadId: ( input: DeleteProjectionThreadProposedPlansInput, ) => Effect.Effect<void, ProjectionRepositoryError>;} export class ProjectionThreadProposedPlanRepository extends Context.Service< ProjectionThreadProposedPlanRepository, ProjectionThreadProposedPlanRepositoryShape>()( "t3/persistence/Services/ProjectionThreadProposedPlans/ProjectionThreadProposedPlanRepository",) {}
import {
IsoDateTime,
OrchestrationProposedPlanId,
ThreadId,
TrimmedNonEmptyString,
TurnId,
} from "@t3tools/contracts";
import { Schema, Context } from "effect";
import type { Effect } from "effect";
import type { ProjectionRepositoryError } from "../Errors.ts";
export const ProjectionThreadProposedPlan = Schema.Struct({
planId: OrchestrationProposedPlanId,
threadId: ThreadId,
turnId: Schema.NullOr(TurnId),
planMarkdown: TrimmedNonEmptyString,
implementedAt: Schema.NullOr(IsoDateTime),
implementationThreadId: Schema.NullOr(ThreadId),
createdAt: IsoDateTime,
updatedAt: IsoDateTime,
});
export type ProjectionThreadProposedPlan = typeof ProjectionThreadProposedPlan.Type;
export const ListProjectionThreadProposedPlansInput = Schema.Struct({
threadId: ThreadId,
});
export type ListProjectionThreadProposedPlansInput =
typeof ListProjectionThreadProposedPlansInput.Type;
export const DeleteProjectionThreadProposedPlansInput = Schema.Struct({
threadId: ThreadId,
});
export type DeleteProjectionThreadProposedPlansInput =
typeof DeleteProjectionThreadProposedPlansInput.Type;
export interface ProjectionThreadProposedPlanRepositoryShape {
readonly upsert: (
proposedPlan: ProjectionThreadProposedPlan,
) => Effect.Effect<void, ProjectionRepositoryError>;
readonly listByThreadId: (
input: ListProjectionThreadProposedPlansInput,
) => Effect.Effect<ReadonlyArray<ProjectionThreadProposedPlan>, ProjectionRepositoryError>;
readonly deleteByThreadId: (
input: DeleteProjectionThreadProposedPlansInput,
) => Effect.Effect<void, ProjectionRepositoryError>;
}
export class ProjectionThreadProposedPlanRepository extends Context.Service<
ProjectionThreadProposedPlanRepository,
ProjectionThreadProposedPlanRepositoryShape
>()(
"t3/persistence/Services/ProjectionThreadProposedPlans/ProjectionThreadProposedPlanRepository",
) {}