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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@

node_modules
23 changes: 23 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"name": "button-onboarding-pierre",
"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": {
"start": "npx postgraphile -c postgres:///onboarding -s onboarding --enhance-graphiql --watch",
"test": "test"
},
"repository": {
"type": "git",
"url": "git+https://github.com/pbastia/button-onboarding.git"
},
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/pbastia/button-onboarding/issues"
},
"homepage": "https://github.com/pbastia/button-onboarding#readme",
"dependencies": {
"postgraphile": "^4.8.0"
}
}
8 changes: 8 additions & 0 deletions schema/data/seed_data.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
BEGIN;

INSERT INTO onboarding.tasks (task, completed) VALUES
('Git Groceries', true),
('Fix Car', false),
('Git reset --hard', false);

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

BEGIN;

CREATE SCHEMA onboarding;

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

BEGIN;

CREATE TABLE onboarding.tasks (
id SERIAL PRIMARY KEY,
task VARCHAR,
completed BOOLEAN,
date_created TIMESTAMPTZ NOT NULL DEFAULT NOW(),
date_updated TIMESTAMPTZ NOT NULL DEFAULT NOW()
);



COMMIT;
19 changes: 19 additions & 0 deletions schema/deploy/adding_update_trigger.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-- Deploy onboarding:adding_update_trigger to pg
-- requires: adding_tasks_table

BEGIN;

CREATE OR REPLACE FUNCTION onboarding.trigger_update_timestamp()
RETURNS TRIGGER AS $$
BEGIN
NEW.date_updated = NOW();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER update_timestamp
BEFORE UPDATE ON onboarding.tasks
FOR EACH ROW
EXECUTE PROCEDURE onboarding.trigger_update_timestamp();

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

BEGIN;

DROP SCHEMA onboarding;

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

BEGIN;

DROP TABLE onboarding.tasks;

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

BEGIN;

DROP TRIGGER update_timestamp ON onboarding.tasks;
DROP FUNCTION onboarding.trigger_update_timestamp();

COMMIT;
16 changes: 16 additions & 0 deletions schema/sqitch.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[core]
engine = pg
# plan_file = sqitch.plan
# top_dir = .
# [engine "pg"]
# target = db:pg:
# registry = sqitch
# client = psql
[deploy]
verify = true
[rebase]
verify = true
[target "onboarding"]
uri = db:pg:onboarding
[engine "pg"]
target = onboarding
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=onboarding
%uri=https://github.com/pbastia/button-onboarding

adding_schema_for_application 2020-09-11T19:03:42Z Pierre Bastianelli <pierre.bastianelli@gov.bc.ca> # Adding schema for button onboarding app
adding_tasks_table [adding_schema_for_application] 2020-09-11T20:24:35Z Pierre Bastianelli <pierre.bastianelli@gov.bc.ca> # Creates a table for the tasks
adding_update_trigger [adding_tasks_table] 2020-09-11T20:52:27Z Pierre Bastianelli <pierre.bastianelli@gov.bc.ca> # Creates a trigger to keep the updated timestamp correct
10 changes: 10 additions & 0 deletions schema/verify/adding_schema_for_application.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-- Verify onboarding:adding_schema_for_application on pg

BEGIN;

DO $$
BEGIN
ASSERT(SELECT pg_catalog.has_schema_privilege('onboarding', 'usage'));
END $$;

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

BEGIN;

SELECT id, task, completed, date_created, date_updated FROM onboarding.tasks WHERE FALSE;

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

BEGIN;

SELECT has_function_privilege('onboarding.trigger_update_timestamp()', 'execute');

DO $$
BEGIN
PERFORM tgname
FROM pg_trigger -- internal postgres table for triggers
WHERE NOT tgisinternal
AND tgname = 'update_timestamp'
and tgrelid = 'onboarding.tasks'::regclass;
IF NOT FOUND THEN
RAISE EXCEPTION 'Trigger update timestamp not found';
END IF;
END $$;

ROLLBACK;
Loading