Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules
19 changes: 19 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "button-onboarding",
"version": "1.0.0",
"description": "A guide to help developers onboard to the Button stack by building a simple todo app.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/BCerki/button-onboarding.git"
},
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/BCerki/button-onboarding/issues"
},
"homepage": "https://github.com/BCerki/button-onboarding#readme"
}
14 changes: 14 additions & 0 deletions schema/deploy/insert_todo.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
-- Deploy todo_app:insert_todo to pg
-- requires: todos
-- requires: todo_appschema

BEGIN;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

our team's code style is all lowercase for SQL code


create or replace function todo_app.insert_todo(
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Postgraphile should already expose a mutation that you can call, out of the box:

mutation InsertTodo {
  createToDo(
    input: { 
      todo: { task: 'The Task\'s name', completed: false }
    }
  ) 
  {
    # ... whatever you want returned , or '__typename' if nothing
  }
}

task text,
completed boolean
) returns void language sql security definer as $$
insert into todo_app.todos(task, completed) values($1, $2);
$$;

COMMIT;
11 changes: 11 additions & 0 deletions schema/deploy/seed_todo.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
-- Deploy todo_app:seed_todo to pg
-- requires: insert_todo
-- requires: todos
-- requires: todo_appschema

BEGIN;

select todo_app.insert_todo('task not done', false);
select todo_app.insert_todo('task done', true);

COMMIT;
7 changes: 7 additions & 0 deletions schema/deploy/todo_appschema.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
-- Deploy todo_app:todo_appschema to pg

BEGIN;

create schema todo_app;

COMMIT;
16 changes: 16 additions & 0 deletions schema/deploy/todos.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Deploy todo_app:todos to pg
-- requires: todo_appschema

BEGIN;

set client_min_messages = 'warning';

create table todo_app.todos (
id integer primary key generated always as identity,
task text not null,
completed boolean not null default false,
date_created timestamptz not null default now(),
date_updated timestamptz not null default now()
);

COMMIT;
7 changes: 7 additions & 0 deletions schema/revert/insert_todo.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
-- Revert todo_app:insert_todo from pg

BEGIN;

drop function todo_app.insert_todo(text, boolean);

COMMIT;
7 changes: 7 additions & 0 deletions schema/revert/seed_todo.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
-- Revert todo_app:seed_todo from pg

BEGIN;

delete from todo_app.todos;

COMMIT;
7 changes: 7 additions & 0 deletions schema/revert/todo_appschema.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
-- Revert todo_app:todo_appschema from pg

BEGIN;

drop schema todo_app;

COMMIT;
7 changes: 7 additions & 0 deletions schema/revert/todos.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
-- Revert todo_app:todos from pg

BEGIN;

drop table todo_app.todos;

COMMIT;
11 changes: 11 additions & 0 deletions schema/sqitch.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[core]
engine = pg
# plan_file = sqitch.plan
# top_dir = .
[engine "pg"]
target = todo_app
[target "todo_app"]
uri = db:pg://localhost/todo_app
[user]
name = Brianna Cerkiewicz
email = brianna@button.is
7 changes: 7 additions & 0 deletions schema/sqitch.plan
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
%syntax-version=1.0.0
%project=todo_app

todo_appschema 2022-02-23T22:43:21Z Brianna Cerkiewicz <briannacerkiewicz@pop-os> # Add schema for all todo objects.
todos [todo_appschema] 2022-02-23T22:48:12Z Brianna Cerkiewicz <briannacerkiewicz@pop-os> # Create table to hold todos.
insert_todo [todos todo_appschema] 2022-02-23T23:18:41Z Brianna Cerkiewicz <briannacerkiewicz@pop-os> # Creates a function to insert a todo.
seed_todo [insert_todo todos todo_appschema] 2022-02-24T00:23:11Z Brianna Cerkiewicz <briannacerkiewicz@pop-os> # Creates seed todos.
7 changes: 7 additions & 0 deletions schema/verify/insert_todo.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
-- Verify todo_app:insert_todo on pg

BEGIN;

select has_function_privilege('todo_app.insert_todo(text, boolean)', 'execute');

ROLLBACK;
14 changes: 14 additions & 0 deletions schema/verify/seed_todo.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
-- Verify todo_app:seed_todo on pg


BEGIN;
do $$
declare
count integer;

BEGIN
count := (select count(id) from todo_app.todos);
assert count = 2;
end $$

ROLLBACK;
7 changes: 7 additions & 0 deletions schema/verify/todo_appschema.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
-- Verify todo_app:todo_appschema on pg

BEGIN;

select pg_catalog.has_schema_privilege('todo_app', 'usage');

ROLLBACK;
9 changes: 9 additions & 0 deletions schema/verify/todos.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
-- Verify todo_app:todos on pg

BEGIN;

select id, task, completed, date_created, date_updated
FROM todo_app.todos
WHERE FALSE;

ROLLBACK;