From 726062958eae2e9f24bbc0d2d6e6436ac2cb7534 Mon Sep 17 00:00:00 2001 From: Anukiran Date: Thu, 22 Oct 2026 14:51:45 -0500 Subject: [PATCH] Update SDK tutorial steps to current SDK APIs - Use `toward: { table }` for relations; `toward: { type }` is deprecated since SDK 2.6.0 - Fix closeProject's "already closed" check to test CLOSED instead of CANCELED - Require a logged-in user to call closeProject, which removes the `tailor generate` warning about anonymous resolver access Co-Authored-By: Claude Opus 5.5 --- docs/build-from-scratch/sdk/step-01/src/db/task.ts | 4 ++-- docs/build-from-scratch/sdk/step-02/src/db/task.ts | 4 ++-- .../sdk/step-03/src/common/permission.ts | 9 +++++++++ docs/build-from-scratch/sdk/step-03/src/db/task.ts | 4 ++-- .../sdk/step-03/src/resolver/closeProject.ts | 4 +++- .../sdk/step-04/src/common/permission.ts | 9 +++++++++ docs/build-from-scratch/sdk/step-04/src/db/task.ts | 4 ++-- .../sdk/step-04/src/resolver/closeProject.ts | 4 +++- 8 files changed, 32 insertions(+), 10 deletions(-) diff --git a/docs/build-from-scratch/sdk/step-01/src/db/task.ts b/docs/build-from-scratch/sdk/step-01/src/db/task.ts index d12800d..fec91b8 100644 --- a/docs/build-from-scratch/sdk/step-01/src/db/task.ts +++ b/docs/build-from-scratch/sdk/step-01/src/db/task.ts @@ -15,11 +15,11 @@ export const task = db projectId: db .uuid() .description("ID of the project the task belongs to") - .relation({ type: "n-1", toward: { type: project } }), + .relation({ type: "n-1", toward: { table: project } }), assigneeId: db .uuid({ optional: true }) .description("ID of the user assigned to the task") - .relation({ type: "n-1", toward: { type: user } }), + .relation({ type: "n-1", toward: { table: user } }), status: db.enum([ { value: "TODO", description: "To Do status" }, { value: "IN_PROGRESS", description: "In Progress status" }, diff --git a/docs/build-from-scratch/sdk/step-02/src/db/task.ts b/docs/build-from-scratch/sdk/step-02/src/db/task.ts index 3d949b4..011ec8b 100644 --- a/docs/build-from-scratch/sdk/step-02/src/db/task.ts +++ b/docs/build-from-scratch/sdk/step-02/src/db/task.ts @@ -15,11 +15,11 @@ export const task = db projectId: db .uuid() .description("ID of the project the task belongs to") - .relation({ type: "n-1", toward: { type: project } }), + .relation({ type: "n-1", toward: { table: project } }), assigneeId: db .uuid({ optional: true }) .description("ID of the user assigned to the task") - .relation({ type: "n-1", toward: { type: user } }), + .relation({ type: "n-1", toward: { table: user } }), status: db.enum([ { value: "TODO", description: "To Do status" }, { value: "IN_PROGRESS", description: "In Progress status" }, diff --git a/docs/build-from-scratch/sdk/step-03/src/common/permission.ts b/docs/build-from-scratch/sdk/step-03/src/common/permission.ts index 7d2b941..bf2c2f7 100644 --- a/docs/build-from-scratch/sdk/step-03/src/common/permission.ts +++ b/docs/build-from-scratch/sdk/step-03/src/common/permission.ts @@ -1,5 +1,6 @@ import type { PermissionCondition, + ResolverPermission, TailorTypeGqlPermission, TailorTypePermission, } from "@tailor-platform/sdk"; @@ -30,3 +31,11 @@ export const gqlPermissionLoggedIn = [ permit: true, }, ] as const satisfies TailorTypeGqlPermission; + +// Any logged-in user can call the resolver. +export const resolverPermissionLoggedIn = [ + { + conditions: [loggedIn], + permit: true, + }, +] as const satisfies ResolverPermission; diff --git a/docs/build-from-scratch/sdk/step-03/src/db/task.ts b/docs/build-from-scratch/sdk/step-03/src/db/task.ts index 3d949b4..011ec8b 100644 --- a/docs/build-from-scratch/sdk/step-03/src/db/task.ts +++ b/docs/build-from-scratch/sdk/step-03/src/db/task.ts @@ -15,11 +15,11 @@ export const task = db projectId: db .uuid() .description("ID of the project the task belongs to") - .relation({ type: "n-1", toward: { type: project } }), + .relation({ type: "n-1", toward: { table: project } }), assigneeId: db .uuid({ optional: true }) .description("ID of the user assigned to the task") - .relation({ type: "n-1", toward: { type: user } }), + .relation({ type: "n-1", toward: { table: user } }), status: db.enum([ { value: "TODO", description: "To Do status" }, { value: "IN_PROGRESS", description: "In Progress status" }, diff --git a/docs/build-from-scratch/sdk/step-03/src/resolver/closeProject.ts b/docs/build-from-scratch/sdk/step-03/src/resolver/closeProject.ts index b62ab71..675f2f1 100644 --- a/docs/build-from-scratch/sdk/step-03/src/resolver/closeProject.ts +++ b/docs/build-from-scratch/sdk/step-03/src/resolver/closeProject.ts @@ -1,9 +1,11 @@ import { createResolver, t } from "@tailor-platform/sdk"; +import { resolverPermissionLoggedIn } from "../common/permission"; import { getDB } from "../generated/tailordb"; export default createResolver({ name: "closeProject", operation: "mutation", + permission: resolverPermissionLoggedIn, input: { id: t.string(), }, @@ -21,7 +23,7 @@ export default createResolver({ throw new Error(`Project not found, expected:1 got:0`); } - if (project.status === "CANCELED") { + if (project.status === "CLOSED") { return { result: "Project is already closed." }; } diff --git a/docs/build-from-scratch/sdk/step-04/src/common/permission.ts b/docs/build-from-scratch/sdk/step-04/src/common/permission.ts index 7d2b941..bf2c2f7 100644 --- a/docs/build-from-scratch/sdk/step-04/src/common/permission.ts +++ b/docs/build-from-scratch/sdk/step-04/src/common/permission.ts @@ -1,5 +1,6 @@ import type { PermissionCondition, + ResolverPermission, TailorTypeGqlPermission, TailorTypePermission, } from "@tailor-platform/sdk"; @@ -30,3 +31,11 @@ export const gqlPermissionLoggedIn = [ permit: true, }, ] as const satisfies TailorTypeGqlPermission; + +// Any logged-in user can call the resolver. +export const resolverPermissionLoggedIn = [ + { + conditions: [loggedIn], + permit: true, + }, +] as const satisfies ResolverPermission; diff --git a/docs/build-from-scratch/sdk/step-04/src/db/task.ts b/docs/build-from-scratch/sdk/step-04/src/db/task.ts index 3d949b4..011ec8b 100644 --- a/docs/build-from-scratch/sdk/step-04/src/db/task.ts +++ b/docs/build-from-scratch/sdk/step-04/src/db/task.ts @@ -15,11 +15,11 @@ export const task = db projectId: db .uuid() .description("ID of the project the task belongs to") - .relation({ type: "n-1", toward: { type: project } }), + .relation({ type: "n-1", toward: { table: project } }), assigneeId: db .uuid({ optional: true }) .description("ID of the user assigned to the task") - .relation({ type: "n-1", toward: { type: user } }), + .relation({ type: "n-1", toward: { table: user } }), status: db.enum([ { value: "TODO", description: "To Do status" }, { value: "IN_PROGRESS", description: "In Progress status" }, diff --git a/docs/build-from-scratch/sdk/step-04/src/resolver/closeProject.ts b/docs/build-from-scratch/sdk/step-04/src/resolver/closeProject.ts index b62ab71..675f2f1 100644 --- a/docs/build-from-scratch/sdk/step-04/src/resolver/closeProject.ts +++ b/docs/build-from-scratch/sdk/step-04/src/resolver/closeProject.ts @@ -1,9 +1,11 @@ import { createResolver, t } from "@tailor-platform/sdk"; +import { resolverPermissionLoggedIn } from "../common/permission"; import { getDB } from "../generated/tailordb"; export default createResolver({ name: "closeProject", operation: "mutation", + permission: resolverPermissionLoggedIn, input: { id: t.string(), }, @@ -21,7 +23,7 @@ export default createResolver({ throw new Error(`Project not found, expected:1 got:0`); } - if (project.status === "CANCELED") { + if (project.status === "CLOSED") { return { result: "Project is already closed." }; }