Skip to content

Commit 57e89d4

Browse files
committed
separate resource from controller due to tree shaking issues in dev
1 parent af46bb7 commit 57e89d4

22 files changed

+97
-86
lines changed

api/src/Accounts/GetMe.resource.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { S } from "#resources/lib"
2+
import { NotFoundError } from "effect-app/client"
3+
import { User } from "./models.js"
4+
5+
export class GetMe extends S.Req<GetMe>()("Accounts.GetMe", {}, { success: User, failure: NotFoundError }) {}

api/src/Accounts/GetMe.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
import { handlerFor } from "#api/lib/handler"
2-
import { S } from "#resources/lib"
32
import { Effect } from "effect-app"
4-
import { NotFoundError } from "effect-app/client"
5-
import { User } from "./models.js"
3+
import { GetMe } from "./GetMe.resource.js"
64
import { UserRepo } from "./UserRepo.js"
75

8-
export class GetMe extends S.Req<GetMe>()("Accounts.GetMe", {}, { success: User, failure: NotFoundError }) {}
9-
106
export default handlerFor(GetMe)({
117
dependencies: [UserRepo.Default],
128
effect: Effect.gen(function*() {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { S } from "#resources/lib"
2+
import { UserId } from "./models.js"
3+
import { UserView } from "./views.js"
4+
5+
export class IndexUsers extends S.Req<IndexUsers>()("Accounts.IndexUsers", {
6+
filterByIds: S.NonEmptyArray(UserId)
7+
}, {
8+
allowAnonymous: true,
9+
allowRoles: ["user"],
10+
success: S.Struct({
11+
users: S.Array(UserView)
12+
})
13+
}) {}

api/src/Accounts/IndexUsers.ts

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,9 @@
11
import { handlerFor } from "#api/lib/handler"
22
import { Q } from "#api/services"
3-
import { S } from "#resources/lib"
43
import { Array, Effect, Order } from "effect-app"
5-
import { UserId } from "./models.js"
4+
import { IndexUsers } from "./IndexUsers.resource.js"
65
import { UserRepo } from "./UserRepo.js"
7-
import { UserView } from "./views.js"
8-
9-
export class IndexUsers extends S.Req<IndexUsers>()("Accounts.IndexUsers", {
10-
filterByIds: S.NonEmptyArray(UserId)
11-
}, {
12-
allowAnonymous: true,
13-
allowRoles: ["user"],
14-
success: S.Struct({
15-
users: S.Array(UserView)
16-
})
17-
}) {}
6+
import type { UserView } from "./views.js"
187

198
export default handlerFor(IndexUsers)({
209
dependencies: [UserRepo.Default],
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { S } from "#resources/lib"
2+
import { InvalidStateError, NotFoundError, OptimisticConcurrencyException } from "effect-app/client"
3+
import { BlogPost, BlogPostId } from "./models.js"
4+
5+
export class CreatePost extends S.Req<CreatePost>()("Blog.Create", BlogPost.pick("title", "body"), {
6+
allowRoles: ["user"],
7+
success: S.Struct({ id: BlogPostId }),
8+
failure: S.Union(NotFoundError, InvalidStateError, OptimisticConcurrencyException)
9+
}) {}

api/src/Blog/CreatePost.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,10 @@
11
import { UserRepo } from "#Accounts/UserRepo"
22
import { handlerFor } from "#api/lib/handler"
3-
import { S } from "#resources/lib"
43
import { Effect } from "effect-app"
5-
import { InvalidStateError, NotFoundError, OptimisticConcurrencyException } from "effect-app/client"
6-
import { BlogPost, BlogPostId } from "./models.js"
4+
import { CreatePost } from "./CreatePost.resource.js"
5+
import { BlogPost } from "./models.js"
76
import { BlogPostRepo } from "./Repo.js"
87

9-
export class CreatePost extends S.Req<CreatePost>()("Blog.Create", BlogPost.pick("title", "body"), {
10-
allowRoles: ["user"],
11-
success: S.Struct({ id: BlogPostId }),
12-
failure: S.Union(NotFoundError, InvalidStateError, OptimisticConcurrencyException)
13-
}) {}
14-
158
export default handlerFor(CreatePost)({
169
dependencies: [
1710
BlogPostRepo.Default,

api/src/Blog/FindPost.resource.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { S } from "#resources/lib"
2+
import { BlogPostId } from "./models.js"
3+
import { BlogPostView } from "./views.js"
4+
5+
export class FindPost extends S.Req<FindPost>()("Blog.FindPost", {
6+
id: BlogPostId
7+
}, {
8+
allowAnonymous: true,
9+
allowRoles: ["user"],
10+
success: S.NullOr(BlogPostView)
11+
}) {}

api/src/Blog/FindPost.ts

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,8 @@
11
import { handlerFor } from "#api/lib/handler"
2-
import { S } from "#resources/lib"
32
import { Effect } from "effect"
43
import { Option } from "effect-app"
5-
import { BlogPostId } from "./models.js"
4+
import { FindPost } from "./FindPost.resource.js"
65
import { BlogPostRepo } from "./Repo.js"
7-
import { BlogPostView } from "./views.js"
8-
9-
export class FindPost extends S.Req<FindPost>()("Blog.FindPost", {
10-
id: BlogPostId
11-
}, {
12-
allowAnonymous: true,
13-
allowRoles: ["user"],
14-
success: S.NullOr(BlogPostView)
15-
}) {}
166

177
export default handlerFor(FindPost)({
188
dependencies: [

api/src/Blog/ListPosts.resource.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { S } from "#resources/lib"
2+
import { BlogPostView } from "./views.js"
3+
4+
export class ListPosts extends S.Req<ListPosts>()("Blog.List", {}, {
5+
allowAnonymous: true,
6+
allowRoles: ["user"],
7+
success: S.Struct({
8+
items: S.Array(BlogPostView)
9+
})
10+
}) {}

api/src/Blog/ListPosts.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
11
import { handlerFor } from "#api/lib/handler"
2-
import { S } from "#resources/lib"
32
import { Effect } from "effect-app"
3+
import { ListPosts } from "./ListPosts.resource.js"
44
import { BlogPostRepo } from "./Repo.js"
5-
import { BlogPostView } from "./views.js"
6-
7-
export class ListPosts extends S.Req<ListPosts>()("Blog.List", {}, {
8-
allowAnonymous: true,
9-
allowRoles: ["user"],
10-
success: S.Struct({
11-
items: S.Array(BlogPostView)
12-
})
13-
}) {}
145

156
export default handlerFor(ListPosts)({
167
dependencies: [

0 commit comments

Comments
 (0)