diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..6ce28ac --- /dev/null +++ b/package.json @@ -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" +} diff --git a/schema/deploy/insert_todo.sql b/schema/deploy/insert_todo.sql new file mode 100644 index 0000000..ba4c750 --- /dev/null +++ b/schema/deploy/insert_todo.sql @@ -0,0 +1,14 @@ +-- Deploy todo_app:insert_todo to pg +-- requires: todos +-- requires: todo_appschema + +BEGIN; + +create or replace function todo_app.insert_todo( + task text, + completed boolean +) returns void language sql security definer as $$ + insert into todo_app.todos(task, completed) values($1, $2); +$$; + +COMMIT; diff --git a/schema/deploy/seed_todo.sql b/schema/deploy/seed_todo.sql new file mode 100644 index 0000000..70fe132 --- /dev/null +++ b/schema/deploy/seed_todo.sql @@ -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; diff --git a/schema/deploy/todo_appschema.sql b/schema/deploy/todo_appschema.sql new file mode 100644 index 0000000..f663fc1 --- /dev/null +++ b/schema/deploy/todo_appschema.sql @@ -0,0 +1,7 @@ +-- Deploy todo_app:todo_appschema to pg + +BEGIN; + +create schema todo_app; + +COMMIT; diff --git a/schema/deploy/todos.sql b/schema/deploy/todos.sql new file mode 100644 index 0000000..ea41352 --- /dev/null +++ b/schema/deploy/todos.sql @@ -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; diff --git a/schema/revert/insert_todo.sql b/schema/revert/insert_todo.sql new file mode 100644 index 0000000..9b5cf85 --- /dev/null +++ b/schema/revert/insert_todo.sql @@ -0,0 +1,7 @@ +-- Revert todo_app:insert_todo from pg + +BEGIN; + +drop function todo_app.insert_todo(text, boolean); + +COMMIT; diff --git a/schema/revert/seed_todo.sql b/schema/revert/seed_todo.sql new file mode 100644 index 0000000..002f7cc --- /dev/null +++ b/schema/revert/seed_todo.sql @@ -0,0 +1,7 @@ +-- Revert todo_app:seed_todo from pg + +BEGIN; + +delete from todo_app.todos; + +COMMIT; diff --git a/schema/revert/todo_appschema.sql b/schema/revert/todo_appschema.sql new file mode 100644 index 0000000..20b6179 --- /dev/null +++ b/schema/revert/todo_appschema.sql @@ -0,0 +1,7 @@ +-- Revert todo_app:todo_appschema from pg + +BEGIN; + +drop schema todo_app; + +COMMIT; diff --git a/schema/revert/todos.sql b/schema/revert/todos.sql new file mode 100644 index 0000000..9cf172f --- /dev/null +++ b/schema/revert/todos.sql @@ -0,0 +1,7 @@ +-- Revert todo_app:todos from pg + +BEGIN; + +drop table todo_app.todos; + +COMMIT; diff --git a/schema/sqitch.conf b/schema/sqitch.conf new file mode 100644 index 0000000..aaca578 --- /dev/null +++ b/schema/sqitch.conf @@ -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 \ No newline at end of file diff --git a/schema/sqitch.plan b/schema/sqitch.plan new file mode 100644 index 0000000..ae8ccb7 --- /dev/null +++ b/schema/sqitch.plan @@ -0,0 +1,7 @@ +%syntax-version=1.0.0 +%project=todo_app + +todo_appschema 2022-02-23T22:43:21Z Brianna Cerkiewicz # Add schema for all todo objects. +todos [todo_appschema] 2022-02-23T22:48:12Z Brianna Cerkiewicz # Create table to hold todos. +insert_todo [todos todo_appschema] 2022-02-23T23:18:41Z Brianna Cerkiewicz # Creates a function to insert a todo. +seed_todo [insert_todo todos todo_appschema] 2022-02-24T00:23:11Z Brianna Cerkiewicz # Creates seed todos. diff --git a/schema/verify/insert_todo.sql b/schema/verify/insert_todo.sql new file mode 100644 index 0000000..9b7a74d --- /dev/null +++ b/schema/verify/insert_todo.sql @@ -0,0 +1,7 @@ +-- Verify todo_app:insert_todo on pg + +BEGIN; + +select has_function_privilege('todo_app.insert_todo(text, boolean)', 'execute'); + +ROLLBACK; diff --git a/schema/verify/seed_todo.sql b/schema/verify/seed_todo.sql new file mode 100644 index 0000000..00d9d7d --- /dev/null +++ b/schema/verify/seed_todo.sql @@ -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; diff --git a/schema/verify/todo_appschema.sql b/schema/verify/todo_appschema.sql new file mode 100644 index 0000000..253a3ed --- /dev/null +++ b/schema/verify/todo_appschema.sql @@ -0,0 +1,7 @@ +-- Verify todo_app:todo_appschema on pg + +BEGIN; + +select pg_catalog.has_schema_privilege('todo_app', 'usage'); + +ROLLBACK; diff --git a/schema/verify/todos.sql b/schema/verify/todos.sql new file mode 100644 index 0000000..ed73aa2 --- /dev/null +++ b/schema/verify/todos.sql @@ -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;