Skip to content
This repository has been archived by the owner on Jul 16, 2024. It is now read-only.

Commit

Permalink
persistence (#8)
Browse files Browse the repository at this point in the history
  • Loading branch information
tim-smart authored Dec 6, 2023
1 parent 31795fb commit a39bfc5
Show file tree
Hide file tree
Showing 9 changed files with 917 additions and 838 deletions.
5 changes: 0 additions & 5 deletions .changeset/blue-worms-warn.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/swift-chicken-build.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@effect/experimental": minor
---

use Schema/Serializable for peristence
109 changes: 69 additions & 40 deletions docs/modules/Persistence.ts.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,23 @@ Added in v1.0.0
- [PersistenceSchemaError (class)](#persistenceschemaerror-class)
- [layers](#layers)
- [layerMemory](#layermemory)
- [layerSchema](#layerschema)
- [layerSchemaMemory](#layerschemamemory)
- [layerResult](#layerresult)
- [layerResultMemory](#layerresultmemory)
- [models](#models)
- [BackingPersistence (interface)](#backingpersistence-interface)
- [Persistence (interface)](#persistence-interface)
- [SchemaPersistence (interface)](#schemapersistence-interface)
- [BackingPersistenceStore (interface)](#backingpersistencestore-interface)
- [ResultPersistence (interface)](#resultpersistence-interface)
- [ResultPersistence (namespace)](#resultpersistence-namespace)
- [Key (interface)](#key-interface)
- [ResultPersistenceStore (interface)](#resultpersistencestore-interface)
- [tags](#tags)
- [BackingPersistence](#backingpersistence)
- [SchemaPersistence](#schemapersistence)
- [ResultPersistence](#resultpersistence)
- [type ids](#type-ids)
- [BackingPersistenceTypeId](#backingpersistencetypeid)
- [BackingPersistenceTypeId (type alias)](#backingpersistencetypeid-type-alias)
- [SchemaPersistenceTypeId](#schemapersistencetypeid)
- [SchemaPersistenceTypeId (type alias)](#schemapersistencetypeid-type-alias)
- [utils](#utils)
- [Persistence](#persistence)
- [ResultPersistenceTypeId](#resultpersistencetypeid)
- [ResultPersistenceTypeId (type alias)](#resultpersistencetypeid-type-alias)

---

Expand Down Expand Up @@ -81,22 +82,22 @@ export declare const layerMemory: Layer.Layer<never, never, BackingPersistence>

Added in v1.0.0

## layerSchema
## layerResult

**Signature**

```ts
export declare const layerSchema: Layer.Layer<BackingPersistence, never, SchemaPersistence>
export declare const layerResult: Layer.Layer<BackingPersistence, never, ResultPersistence>
```

Added in v1.0.0

## layerSchemaMemory
## layerResultMemory

**Signature**

```ts
export declare const layerSchemaMemory: Layer.Layer<never, never, SchemaPersistence>
export declare const layerResultMemory: Layer.Layer<never, never, ResultPersistence>
```

Added in v1.0.0
Expand All @@ -110,112 +111,140 @@ Added in v1.0.0
```ts
export interface BackingPersistence {
readonly [BackingPersistenceTypeId]: BackingPersistenceTypeId
readonly make: (storeId: string) => Effect.Effect<never, never, Persistence<unknown>>
readonly make: (storeId: string) => Effect.Effect<never, never, BackingPersistenceStore>
}
```

Added in v1.0.0

## Persistence (interface)
## BackingPersistenceStore (interface)

**Signature**

```ts
export interface Persistence<A> {
readonly get: (key: string) => Effect.Effect<never, PersistenceError, Option.Option<A>>
readonly getMany: (key: Array<string>) => Effect.Effect<never, PersistenceError, Array<Option.Option<A>>>
readonly set: (key: string, value: A) => Effect.Effect<never, PersistenceError, void>
export interface BackingPersistenceStore {
readonly get: (key: string) => Effect.Effect<never, PersistenceError, Option.Option<unknown>>
readonly getMany: (key: Array<string>) => Effect.Effect<never, PersistenceError, Array<Option.Option<unknown>>>
readonly set: (key: string, value: unknown) => Effect.Effect<never, PersistenceError, void>
readonly remove: (key: string) => Effect.Effect<never, PersistenceError, void>
}
```

Added in v1.0.0

## SchemaPersistence (interface)
## ResultPersistence (interface)

**Signature**

```ts
export interface SchemaPersistence {
readonly [SchemaPersistenceTypeId]: SchemaPersistenceTypeId
readonly make: <I, A>(storeId: string, schema: Schema.Schema<I, A>) => Effect.Effect<never, never, Persistence<A>>
export interface ResultPersistence {
readonly [ResultPersistenceTypeId]: ResultPersistenceTypeId
readonly make: (storeId: string) => Effect.Effect<never, never, ResultPersistenceStore>
}
```

Added in v1.0.0

# tags
## ResultPersistence (namespace)

## BackingPersistence
Added in v1.0.0

### Key (interface)

**Signature**

```ts
export declare const BackingPersistence: Context.Tag<BackingPersistence, BackingPersistence>
export interface Key<IE, E, IA, A> extends PrimaryKey.PrimaryKey, Serializable.WithResult<IE, E, IA, A> {
readonly _tag: string
}
```

Added in v1.0.0

## SchemaPersistence
## ResultPersistenceStore (interface)

**Signature**

```ts
export declare const SchemaPersistence: Context.Tag<SchemaPersistence, SchemaPersistence>
export interface ResultPersistenceStore {
readonly get: <IE, E, IA, A>(
key: ResultPersistence.Key<IE, E, IA, A>
) => Effect.Effect<never, PersistenceError, Option.Option<Exit.Exit<E, A>>>
readonly getMany: <IE, E, IA, A>(
key: ReadonlyArray<ResultPersistence.Key<IE, E, IA, A>>
) => Effect.Effect<never, PersistenceError, Array<Option.Option<Exit.Exit<E, A>>>>
readonly set: <IE, E, IA, A>(
key: ResultPersistence.Key<IE, E, IA, A>,
value: Exit.Exit<E, A>
) => Effect.Effect<never, PersistenceError, void>
readonly remove: <IE, E, IA, A>(
key: ResultPersistence.Key<IE, E, IA, A>
) => Effect.Effect<never, PersistenceError, void>
}
```

Added in v1.0.0

# type ids
# tags

## BackingPersistenceTypeId
## BackingPersistence

**Signature**

```ts
export declare const BackingPersistenceTypeId: typeof BackingPersistenceTypeId
export declare const BackingPersistence: Context.Tag<BackingPersistence, BackingPersistence>
```
Added in v1.0.0
## BackingPersistenceTypeId (type alias)
## ResultPersistence
**Signature**
```ts
export type BackingPersistenceTypeId = typeof BackingPersistenceTypeId
export declare const ResultPersistence: Context.Tag<ResultPersistence, ResultPersistence>
```
Added in v1.0.0
## SchemaPersistenceTypeId
# type ids
## BackingPersistenceTypeId
**Signature**
```ts
export declare const SchemaPersistenceTypeId: typeof SchemaPersistenceTypeId
export declare const BackingPersistenceTypeId: typeof BackingPersistenceTypeId
```
Added in v1.0.0
## SchemaPersistenceTypeId (type alias)
## BackingPersistenceTypeId (type alias)
**Signature**
```ts
export type SchemaPersistenceTypeId = typeof SchemaPersistenceTypeId
export type BackingPersistenceTypeId = typeof BackingPersistenceTypeId
```
Added in v1.0.0
# utils
## ResultPersistenceTypeId
**Signature**
```ts
export declare const ResultPersistenceTypeId: typeof ResultPersistenceTypeId
```
Added in v1.0.0
## Persistence
## ResultPersistenceTypeId (type alias)
**Signature**
```ts
export declare const Persistence: <A>(_: Persistence<A>) => Persistence<A>
export type ResultPersistenceTypeId = typeof ResultPersistenceTypeId
```
Added in v1.0.0
20 changes: 7 additions & 13 deletions docs/modules/RequestResolver.ts.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,21 +44,15 @@ Added in v1.0.0
**Signature**
```ts
export declare const persisted: (<EI, EA, AI, AA>(options: {
readonly storeId: string
readonly failureSchema: Schema.Schema<EI, EA>
readonly successSchema: Schema.Schema<AI, AA>
}) => <Req extends Request.Request<EA, AA> & { readonly _tag: string } & PrimaryKey.PrimaryKey>(
export declare const persisted: ((
storeId: string
) => <Req extends Schema.TaggedRequest.Any & PrimaryKey.PrimaryKey>(
self: RequestResolver.RequestResolver<Req, never>
) => Effect.Effect<Scope.Scope | Persistence.SchemaPersistence, never, RequestResolver.RequestResolver<Req, never>>) &
(<Req extends Request.Request<EA, AA> & { readonly _tag: string } & PrimaryKey.PrimaryKey, EI, EA, AI, AA>(
) => Effect.Effect<Scope.Scope | Persistence.ResultPersistence, never, RequestResolver.RequestResolver<Req, never>>) &
(<Req extends Schema.TaggedRequest.Any & PrimaryKey.PrimaryKey>(
self: RequestResolver.RequestResolver<Req, never>,
options: {
readonly storeId: string
readonly failureSchema: Schema.Schema<EI, EA>
readonly successSchema: Schema.Schema<AI, AA>
}
) => Effect.Effect<Scope.Scope | Persistence.SchemaPersistence, never, RequestResolver.RequestResolver<Req, never>>)
storeId: string
) => Effect.Effect<Scope.Scope | Persistence.ResultPersistence, never, RequestResolver.RequestResolver<Req, never>>)
```
Added in v1.0.0
42 changes: 21 additions & 21 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,35 +53,35 @@
},
"packageManager": "[email protected]",
"peerDependencies": {
"@effect/platform-node": "^0.32.1",
"@effect/schema": "^0.49.4",
"effect": "2.0.0-next.56"
"@effect/platform-node": "^0.34.0",
"@effect/schema": "^0.52.0",
"effect": "2.0.0-next.59"
},
"devDependencies": {
"@babel/cli": "^7.23.4",
"@babel/core": "^7.23.3",
"@babel/core": "^7.23.5",
"@babel/plugin-transform-export-namespace-from": "^7.23.4",
"@babel/plugin-transform-modules-commonjs": "^7.23.3",
"@changesets/changelog-github": "^0.4.8",
"@changesets/cli": "^2.26.2",
"@effect/build-utils": "^0.5.0",
"@effect/docgen": "^0.3.5",
"@changesets/changelog-github": "^0.5.0",
"@changesets/cli": "^2.27.1",
"@effect/build-utils": "^0.7.0",
"@effect/docgen": "^0.3.7",
"@effect/dtslint": "^0.0.4",
"@effect/eslint-plugin": "^0.1.2",
"@effect/language-service": "^0.0.21",
"@effect/platform-node": "^0.32.2",
"@effect/schema": "^0.49.4",
"@effect/platform-node": "^0.34.0",
"@effect/schema": "^0.52.0",
"@types/chai": "^4.3.11",
"@types/node": "^20.9.5",
"@typescript-eslint/eslint-plugin": "^6.12.0",
"@typescript-eslint/parser": "^6.12.0",
"@vitejs/plugin-react": "^4.2.0",
"@vitest/coverage-v8": "^0.34.6",
"@types/node": "^20.10.3",
"@typescript-eslint/eslint-plugin": "^6.13.2",
"@typescript-eslint/parser": "^6.13.2",
"@vitejs/plugin-react": "^4.2.1",
"@vitest/coverage-v8": "^1.0.1",
"babel-plugin-annotate-pure-calls": "^0.4.0",
"concurrently": "^8.2.2",
"effect": "2.0.0-next.56",
"effect": "2.0.0-next.59",
"error-stack-parser": "^2.1.4",
"eslint": "^8.54.0",
"eslint": "^8.55.0",
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-codegen": "0.21.0",
"eslint-plugin-deprecation": "^2.0.0",
Expand All @@ -92,11 +92,11 @@
"madge": "^6.1.0",
"prettier": "^3.1.0",
"rimraf": "^5.0.5",
"tsx": "^4.4.0",
"typescript": "^5.3.2",
"vitest": "0.34.6"
"tsx": "^4.6.2",
"typescript": "^5.3.3",
"vitest": "1.0.1"
},
"dependencies": {
"msgpackr": "^1.9.9"
"msgpackr": "^1.10.0"
}
}
Loading

0 comments on commit a39bfc5

Please sign in to comment.