mirror of
https://github.com/wasp-lang/wasp.git
synced 2024-12-27 19:14:52 +03:00
170 lines
4.0 KiB
JavaScript
170 lines
4.0 KiB
JavaScript
app todoApp {
|
|
wasp: {
|
|
version: "^0.9.1"
|
|
},
|
|
title: "ToDo App",
|
|
// head: [],
|
|
dependencies: [
|
|
("@tailwindcss/forms", "^0.5.3"),
|
|
("@tailwindcss/typography", "^0.5.7")
|
|
],
|
|
auth: {
|
|
userEntity: User,
|
|
// externalAuthEntity: SocialLogin,
|
|
methods: {
|
|
usernameAndPassword: {},
|
|
// google: {
|
|
// configFn: import { config } from "@server/auth/google.js",
|
|
// getUserFieldsFn: import { getUserFields } from "@server/auth/google.js"
|
|
// },
|
|
// gitHub: {
|
|
// configFn: import { config } from "@server/auth/github.js",
|
|
// getUserFieldsFn: import { getUserFields } from "@server/auth/github.js"
|
|
// }
|
|
},
|
|
onAuthFailedRedirectTo: "/login",
|
|
onAuthSucceededRedirectTo: "/profile"
|
|
},
|
|
server: {
|
|
setupFn: import setup from "@server/serverSetup.js"
|
|
},
|
|
client: {
|
|
rootComponent: import { App } from "@client/App.jsx",
|
|
setupFn: import setup from "@client/clientSetup"
|
|
},
|
|
db: {
|
|
system: PostgreSQL
|
|
},
|
|
}
|
|
|
|
entity User {=psl
|
|
id Int @id @default(autoincrement())
|
|
username String @unique
|
|
password String
|
|
tasks Task[]
|
|
externalAuthAssociations SocialLogin[]
|
|
psl=}
|
|
|
|
entity SocialLogin {=psl
|
|
id Int @id @default(autoincrement())
|
|
provider String
|
|
providerId String
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
userId Int
|
|
createdAt DateTime @default(now())
|
|
@@unique([provider, providerId, userId])
|
|
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 "@client/pages/auth/Signup.jsx"
|
|
}
|
|
|
|
route LoginRoute { path: "/login", to: LoginPage }
|
|
page LoginPage {
|
|
component: import Login from "@client/pages/auth/Login.jsx"
|
|
}
|
|
|
|
route HomeRoute { path: "/", to: MainPage }
|
|
page MainPage {
|
|
authRequired: true,
|
|
component: import Main from "@client/pages/Main.jsx"
|
|
}
|
|
|
|
route AboutRoute { path: "/about", to: AboutPage }
|
|
page AboutPage {
|
|
component: import About from "@client/pages/About.jsx"
|
|
}
|
|
|
|
route ProfileRoute { path: "/profile", to: ProfilePage }
|
|
page ProfilePage {
|
|
authRequired: true,
|
|
component: import { ProfilePage } from "@client/pages/ProfilePage.tsx"
|
|
}
|
|
|
|
// Page for viewing a specific task
|
|
//
|
|
route TaskRoute { path: "/task/:id", to: TaskPage }
|
|
page TaskPage {
|
|
authRequired: true,
|
|
component: import Task from "@client/pages/Task.tsx"
|
|
}
|
|
|
|
// --------- Queries --------- //
|
|
|
|
query getTasks {
|
|
fn: import { getTasks } from "@server/queries.js",
|
|
entities: [Task]
|
|
}
|
|
|
|
api fooBar {
|
|
fn: import { fooBar } from "@server/apis.js",
|
|
entities: [Task],
|
|
httpRoute: (GET, "/foo/bar")
|
|
}
|
|
|
|
query getNumTasks {
|
|
fn: import { getNumTasks } from "@server/queries.js",
|
|
entities: [Task],
|
|
auth: false
|
|
}
|
|
|
|
query getTask {
|
|
fn: import { getTask } from "@server/queries.js",
|
|
entities: [Task]
|
|
}
|
|
|
|
// --------- Actions --------- //
|
|
|
|
action createTask {
|
|
fn: import { createTask } from "@server/actions.js",
|
|
entities: [Task]
|
|
}
|
|
|
|
action updateTaskIsDone {
|
|
fn: import { updateTaskIsDone } from "@server/actions.js",
|
|
entities: [Task]
|
|
}
|
|
|
|
action deleteCompletedTasks {
|
|
fn: import { deleteCompletedTasks } from "@server/actions.js",
|
|
entities: [Task]
|
|
}
|
|
|
|
action toggleAllTasks {
|
|
fn: import { toggleAllTasks } from "@server/actions.js",
|
|
entities: [Task]
|
|
}
|
|
|
|
job mySpecialJob {
|
|
executor: PgBoss,
|
|
perform: {
|
|
fn: import { foo } from "@server/jobs/bar.js",
|
|
executorOptions: {
|
|
pgBoss: {=json { "retryLimit": 1 } json=}
|
|
}
|
|
},
|
|
entities: [Task]
|
|
}
|
|
|
|
job mySpecialScheduledJob {
|
|
executor: PgBoss,
|
|
perform: {
|
|
fn: import { foo } from "@server/jobs/bar.js"
|
|
},
|
|
schedule: {
|
|
cron: "0 * * * *",
|
|
args: {=json { "foo": "bar" } json=},
|
|
executorOptions: {
|
|
pgBoss: {=json { "retryLimit": 2 } json=}
|
|
}
|
|
}
|
|
} |