Files
reffuse/packages/example/src/query/services/Uuid4Query.ts
Julien Valverdé 8fa24b1791
All checks were successful
Lint / lint (push) Successful in 13s
Query work
2025-03-05 00:16:13 +01:00

23 lines
822 B
TypeScript

import { HttpClient, HttpClientError } from "@effect/platform"
import { QueryService } from "@reffuse/extension-query"
import { Console, Effect, ParseResult, Schema } from "effect"
export const Result = Schema.Tuple(Schema.String)
export class Uuid4Query extends QueryService.Tag("Uuid4Query")<Uuid4Query,
typeof Result.Type,
HttpClientError.HttpClientError | ParseResult.ParseError
>() {}
export const Uuid4QueryLive = QueryService.layer(Uuid4Query, {
query: Console.log("Querying...").pipe(
Effect.andThen(Effect.sleep("500 millis")),
Effect.andThen(HttpClient.get("https://www.uuidtools.com/api/generate/v4")),
HttpClient.withTracerPropagation(false),
Effect.flatMap(res => res.json),
Effect.flatMap(Schema.decodeUnknown(Result)),
Effect.scoped,
)
})