Skip to content

Commit 60998ff

Browse files
committed
play with vertical slice
incomplete (frontend not updated)
1 parent 0d7ca19 commit 60998ff

29 files changed

Lines changed: 86 additions & 100 deletions
Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1+
import { BogusEvent } from "api/Events.js"
2+
import { OperationsDefault } from "api/lib/layers.js"
13
import { matchFor } from "api/lib/routing.js"
2-
import { BlogPostRepo, Events, Operations, UserRepo } from "api/services.js"
4+
import { Events, Operations } from "api/services.js"
5+
import { UserRepo } from "api/User/UserRepo.js"
36
import { Duration, Effect, Schedule } from "effect"
47
import { Option } from "effect-app"
58
import { NonEmptyString2k, NonNegativeInt } from "effect-app/Schema"
6-
import { BlogPost } from "models/Blog.js"
7-
import { BlogRsc } from "resources.js"
8-
import { BogusEvent } from "resources/Events.js"
9-
import { OperationsDefault } from "./lib/layers.js"
9+
import { BlogResources } from "resources.js"
10+
import { BlogPost } from "./Blog.js"
11+
import { BlogPostRepo } from "./BlogPostRepo.js"
1012

11-
export default matchFor(BlogRsc)([
13+
export default matchFor(BlogResources)([
1214
BlogPostRepo.Default,
1315
UserRepo.Default,
1416
OperationsDefault,
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1+
import { S } from "api/lib.js"
12
import { InvalidStateError, NotFoundError, OptimisticConcurrencyException } from "effect-app/client"
23
import { OperationId } from "effect-app/Operations"
3-
import { BlogPost, BlogPostId } from "models/Blog.js"
4-
import { S } from "./lib.js"
5-
import { BlogPostView } from "./views.js"
4+
import { BlogPost, BlogPostId } from "./Blog.js"
5+
import { BlogPostView } from "./PostView.js"
66

77
export class CreatePost extends S.Req<CreatePost>()("CreatePost", BlogPost.pick("title", "body"), {
88
allowRoles: ["user"],
@@ -26,6 +26,6 @@ export class PublishPost extends S.Req<PublishPost>()("PublishPost", {
2626
id: BlogPostId
2727
}, { allowRoles: ["user"], success: OperationId, failure: S.Union(NotFoundError) }) {}
2828

29-
// codegen:start {preset: meta, sourcePrefix: src/resources/}
30-
export const meta = { moduleName: "Blog" } as const
29+
// codegen:start {preset: meta, sourcePrefix: src/Blog/}
30+
export const meta = { moduleName: "Blog.resources" } as const
3131
// codegen:end
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import { UserFromId } from "api/User/User.js"
12
import { S } from "effect-app"
2-
import { UserFromId } from "./User.js"
33

44
export const BlogPostId = S.prefixedStringId<BlogPostId>()("post", "BlogPostId")
55
export interface BlogPostIdBrand {

api/src/services/DBContext/BlogPostRepo.ts renamed to api/src/Blog/BlogPostRepo.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { Model } from "@effect-app/infra"
22
import { RepoDefault } from "api/lib/layers.js"
3+
import { UserFromIdResolver } from "api/User/User.js"
4+
import { UserRepo } from "api/User/UserRepo.js"
35
import { Effect } from "effect"
46
import { Context } from "effect-app"
57
import { NonEmptyString255, NonEmptyString2k } from "effect-app/Schema"
6-
import { BlogPost } from "models/Blog.js"
7-
import { UserFromIdResolver } from "models/User.js"
8-
import { UserRepo } from "./UserRepo.js"
8+
import { BlogPost } from "./Blog.js"
99

1010
export type BlogPostSeed = "sample" | ""
1111

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { BlogPost } from "models/Blog.js"
2-
import { S } from "resources/lib.js"
3-
import { UserViewFromId } from "../resolvers/UserResolver.js"
1+
import { S } from "api/lib.js"
2+
import { UserViewFromId } from "api/User/UserResolver.js"
3+
import { BlogPost } from "./Blog.js"
44

55
export class BlogPostView extends S.ExtendedClass<BlogPostView, BlogPostView.From>()({
66
...BlogPost.omit("author"),
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import { S } from "api/lib.js"
12
import type { Schema } from "effect-app/Schema"
2-
import { S } from "resources/lib.js"
33

44
export class BogusEvent extends S.ExtendedTaggedClass<BogusEvent, BogusEvent.From>()("BogusEvent", {
55
id: S.StringId.withDefault,

api/src/HelloWorld.controllers.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { getRequestContext } from "@effect-app/infra/api/setupRequest"
22
import { generate } from "@effect-app/infra/test"
33
import { matchFor } from "api/lib/routing.js"
4-
import { UserRepo } from "api/services.js"
54
import { Effect, S } from "effect-app"
6-
import { User } from "models/User.js"
7-
import { HelloWorldRsc } from "resources.js"
5+
import { HelloWorldResources } from "resources.js"
6+
import { User } from "./User/User.js"
7+
import { UserRepo } from "./User/UserRepo.js"
88

9-
export default matchFor(HelloWorldRsc)([
9+
export default matchFor(HelloWorldResources)([
1010
UserRepo.Default
1111
], ({ GetHelloWorld }) =>
1212
Effect.gen(function*() {
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { RequestContext } from "@effect-app/infra/RequestContext"
2-
import { S } from "./lib.js"
3-
import { UserView } from "./views.js"
2+
import { S } from "api/lib.js"
3+
import { UserView } from "./User/UserView.js"
44

55
class Response extends S.Class<Response>()({
66
now: S.Date.withDefault,
@@ -14,6 +14,6 @@ export class GetHelloWorld extends S.Req<GetHelloWorld>()("GetHelloWorld", {
1414
echo: S.String
1515
}, { allowAnonymous: true, allowRoles: ["user"], success: Response }) {}
1616

17-
// codegen:start {preset: meta, sourcePrefix: src/resources/}
18-
export const meta = { moduleName: "HelloWorld" } as const
17+
// codegen:start {preset: meta, sourcePrefix: src/}
18+
export const meta = { moduleName: "HelloWorld.resources" } as const
1919
// codegen:end

api/src/Operations.controllers.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { matchFor } from "api/lib/routing.js"
22
import { Operations } from "api/services.js"
33
import { Effect } from "effect-app"
4-
import { OperationsRsc } from "resources.js"
4+
import { OperationsResources } from "resources.js"
55
import { OperationsDefault } from "./lib/layers.js"
66

7-
export default matchFor(OperationsRsc)([
7+
export default matchFor(OperationsResources)([
88
OperationsDefault
99
], ({ FindOperation }) =>
1010
Effect.gen(function*() {
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1+
import { clientFor, S } from "api/lib.js"
12
import { Duration, Effect } from "effect-app"
23
import { NotFoundError } from "effect-app/client"
34
import { Operation, OperationFailure, OperationId } from "effect-app/Operations"
4-
import { clientFor } from "./lib.js"
5-
import * as S from "./lib/schema.js"
65

76
export class FindOperation extends S.Req<FindOperation>()("FindOperation", {
87
id: OperationId
98
}, { allowAnonymous: true, allowRoles: ["user"], success: S.NullOr(Operation) }) {}
109

11-
// codegen:start {preset: meta, sourcePrefix: src/resources/}
12-
export const meta = { moduleName: "Operations" } as const
10+
// codegen:start {preset: meta, sourcePrefix: src/}
11+
export const meta = { moduleName: "Operations.resources" } as const
1312
// codegen:end
1413

1514
// Extensions

0 commit comments

Comments
 (0)