import { Model } from "@effect/sql";
export const IssueId = Schema.Number.pipe(Schema.brand("IssueId"));
const VectorSchema = Schema.transform(
Schema.NonEmptyString,
Schema.Array(Schema.Number),
{
encode: (arr) => `[${arr.join(",")}]`,
decode: (str) => pipe(str, FString.slice(1, -1)).split(",").map(Number),
}
);
export class Issue extends Model.Class<Issue>("Issue")({
id: IssueId,
title: Schema.NonEmptyString,
body: Schema.NullOr(Schema.NonEmptyString),
vector: VectorSchema,
createdAt: Schema.DateTimeUtcFromDate,
updatedAt: Schema.DateTimeUtcFromDate,
closedAt: Schema.NullOr(Schema.DateTimeUtcFromDate),
}) {}
import { Model } from "@effect/sql";
export const IssueId = Schema.Number.pipe(Schema.brand("IssueId"));
const VectorSchema = Schema.transform(
Schema.NonEmptyString,
Schema.Array(Schema.Number),
{
encode: (arr) => `[${arr.join(",")}]`,
decode: (str) => pipe(str, FString.slice(1, -1)).split(",").map(Number),
}
);
export class Issue extends Model.Class<Issue>("Issue")({
id: IssueId,
title: Schema.NonEmptyString,
body: Schema.NullOr(Schema.NonEmptyString),
vector: VectorSchema,
createdAt: Schema.DateTimeUtcFromDate,
updatedAt: Schema.DateTimeUtcFromDate,
closedAt: Schema.NullOr(Schema.DateTimeUtcFromDate),
}) {}