Keel studio - From prompt to production backend in 2 mins.

1 min read Original article ↗

model Task {

fields {

title Text

complete Boolean

owner Identity

project Project?

}

actions {

create createTask() with (name, project.id?) {

@set(task.owner = ctx.identity)
@permission(expression: ctx.isAuthenticated)

}

get getTask(id)

update updateTask(id) with (name, project.id)

update completeTask(id) {

@set(todo.complete = true)

}

list listTasks(project.id?)

delete deleteTask(id)

} @permission(

actions: [get, list, update, delete],

expression: todo.owner == ctx.identity

)

}

model Project {

fields {

name Text

tasks Task[]

}

actions {

create createProject() with (name)

get getProject(id)

update updateProject(id) with (name)

list listProjects()

delete deleteProject(id)

}

@on([create], sendNewProjectEmail)

}

job SendDailySummaryEmail {

@schedule("every weekday at 9am")

}