Skip to content

Commit b89a24e

Browse files
committed
Postgres: Add database for domain roles with SQLC+Tern
1 parent 42905cd commit b89a24e

11 files changed

Lines changed: 141 additions & 0 deletions

File tree

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ require (
1919
github.com/golang/gddo v0.0.0-20200127195332-7365cb292b8b
2020
github.com/gomodule/redigo v2.0.0+incompatible
2121
github.com/google/go-github/v29 v29.0.2
22+
github.com/lib/pq v1.3.0
2223
github.com/mattbaird/gochimp v0.0.0-20180111040707-a267553896d1
2324
github.com/peterbourgon/ff v1.6.0
2425
github.com/piotrkubisa/apigo v1.1.2-0.20190907190536-6de39ca9cf97

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn
5858
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
5959
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
6060
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
61+
github.com/lib/pq v1.3.0 h1:/qkRGz8zljWiDcFvgpwUpwIAPu3r07TDvs3Rws+o/pU=
62+
github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
6163
github.com/magiconair/properties v1.7.4-0.20170902060319-8d7837e64d3c/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
6264
github.com/mattbaird/gochimp v0.0.0-20180111040707-a267553896d1 h1:dkQj0GZch2rk/ODbwy17kP5tbmPcMGiw1KYOi6Ni0/w=
6365
github.com/mattbaird/gochimp v0.0.0-20180111040707-a267553896d1/go.mod h1:UaYd2gciRA1AoYEN6S+EiSNFK/0XHj9e1Wgloicgh6s=

internal/db/db.go

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/db/domain-roles.sql.go

Lines changed: 26 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/db/models.go

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/db/querier.go

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/almanack/gen.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package almanack
2+
3+
//go:generate sqlc generate
4+
//go:generate sqlc compile

pkg/almanack/sqlc.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"packages": [
3+
{
4+
"emit_interface": true,
5+
"emit_json_tags": true,
6+
"emit_prepared_queries": false,
7+
"name": "db",
8+
"path": "../../internal/db",
9+
"queries": "../../sql/queries/",
10+
"schema": "../../sql/schema/"
11+
}
12+
],
13+
"version": "1"
14+
}

sql/queries/domain-roles.sql

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
-- name: GetRolesForDomain :one
2+
SELECT
3+
roles
4+
FROM
5+
domain_roles
6+
WHERE
7+
DOMAIN LIKE $1;

sql/schema/001_domain_roles.sql

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
CREATE TABLE domain_roles (
2+
id serial PRIMARY KEY,
3+
domain text NOT NULL,
4+
roles text[],
5+
created_at timestamp WITH time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
6+
updated_at timestamp WITH time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
7+
);
8+
9+
CREATE UNIQUE INDEX unique_domain_on_domain_roles ON domain_roles ((lower(domain)) text_ops);
10+
11+
CREATE OR REPLACE FUNCTION update_row_updated_at_function_ ()
12+
RETURNS TRIGGER
13+
AS $$
14+
BEGIN
15+
NEW.updated_at = clock_timestamp();
16+
RETURN NEW;
17+
END;
18+
$$
19+
LANGUAGE 'plpgsql';
20+
21+
CREATE TRIGGER row_updated_at_on_domain_roles_trigger_
22+
BEFORE UPDATE ON domain_roles
23+
FOR EACH ROW
24+
EXECUTE PROCEDURE update_row_updated_at_function_ ();
25+
26+
---- create above / drop below ----
27+
DROP TABLE domain_roles;

0 commit comments

Comments
 (0)