app todoApp { title: "ToDo App", head: [ "" ], dependencies: [ ("@material-ui/core", "4.11.3") ], auth: { userEntity: User, methods: [ EmailAndPassword ], onAuthFailedRedirectTo: "/login", onAuthSucceededRedirectTo: "/profile" }, server: { setupFn: import setup from "@ext/serverSetup.js" }, client: { setupFn: import setup from "@ext/clientSetup.js" }, db: { system: PostgreSQL } } entity User {=psl id Int @id @default(autoincrement()) email String @unique password String tasks Task[] psl=} entity Task {=psl id Int @id @default(autoincrement()) description String isDone Boolean @default(false) user User @relation(fields: [userId], references: [id]) userId Int psl=} route SignupRoute { path: "/signup", to: SignupPage } page SignupPage { component: import Signup from "@ext/pages/auth/Signup" } route LoginRoute { path: "/login", to: LoginPage } page LoginPage { component: import Login from "@ext/pages/auth/Login" } route HomeRoute { path: "/", to: MainPage } page MainPage { authRequired: true, component: import Main from "@ext/pages/Main" } route AboutRoute { path: "/about", to: AboutPage } page AboutPage { component: import About from "@ext/pages/About" } route ProfileRoute { path: "/profile", to: ProfilePage } page ProfilePage { authRequired: true, component: import { ProfilePage } from "@ext/pages/ProfilePage" } // Page for viewing a specific task // route TaskRoute { path: "/task/:id", to: TaskPage } page TaskPage { authRequired: true, component: import Task from "@ext/pages/Task" } // --------- Queries --------- // query getTasks { fn: import { getTasks } from "@ext/queries.js", entities: [Task] } query getNumTasks { fn: import { getNumTasks } from "@ext/queries.js", entities: [Task], auth: false } query getTask { fn: import { getTask } from "@ext/queries.js", entities: [Task] } // --------- Actions --------- // action createTask { fn: import { createTask } from "@ext/actions.js", entities: [Task] } action updateTaskIsDone { fn: import { updateTaskIsDone } from "@ext/actions.js", entities: [Task] } action deleteCompletedTasks { fn: import { deleteCompletedTasks } from "@ext/actions.js", entities: [Task] } action toggleAllTasks { fn: import { toggleAllTasks } from "@ext/actions.js", entities: [Task] } job mySpecialJob { executor: PgBoss, perform: { fn: import { foo } from "@ext/jobs/bar.js", executorOptions: { pgBoss: {=json { "retryLimit": 1 } json=} } }, entities: [Task] } job mySpecialScheduledJob { executor: PgBoss, perform: { fn: import { foo } from "@ext/jobs/bar.js" }, schedule: { cron: "*/2 * * * *", args: {=json { "foo": "bar" } json=}, executorOptions: { pgBoss: {=json { "retryLimit": 2 } json=} } } }