From a9aa7323a0cb26d18ef9fae6c1a3d906524edd19 Mon Sep 17 00:00:00 2001 From: davidsklar99 Date: Mon, 4 Aug 2025 08:22:28 -0400 Subject: [PATCH 01/11] All start date to be null --- cli/macrostrat/cli/database/migrations/people/main.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/macrostrat/cli/database/migrations/people/main.sql b/cli/macrostrat/cli/database/migrations/people/main.sql index fcc2a1285..4526152a2 100644 --- a/cli/macrostrat/cli/database/migrations/people/main.sql +++ b/cli/macrostrat/cli/database/migrations/people/main.sql @@ -9,7 +9,7 @@ CREATE TABLE IF NOT EXISTS ecosystem.people ( title text NOT NULL, website text, img_id text, - active_start timestamp with time zone NOT NULL DEFAULT now(), + active_start timestamp with time zone DEFAULT now(), active_end timestamp with time zone ); From 99f98fd960684021d2d70b15b4a5794fd8f056ee Mon Sep 17 00:00:00 2001 From: davidsklar99 Date: Mon, 4 Aug 2025 13:45:35 -0400 Subject: [PATCH 02/11] Allow api view to be editable --- cli/macrostrat/cli/database/migrations/people/main.sql | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cli/macrostrat/cli/database/migrations/people/main.sql b/cli/macrostrat/cli/database/migrations/people/main.sql index 4526152a2..7cb9133b7 100644 --- a/cli/macrostrat/cli/database/migrations/people/main.sql +++ b/cli/macrostrat/cli/database/migrations/people/main.sql @@ -52,3 +52,13 @@ INSERT INTO ecosystem.roles (name, description) VALUES ('Leader', 'Leads research or development projects and mentors others'), ('Collaborator', 'Contributes to joint projects'), ON CONFLICT (name) DO NOTHING; + +-- Make it writeable by admins +GRANT SELECT, UPDATE ON ecosystem.people TO web_admin; +GRANT SELECT, UPDATE ON ecosystem.roles TO web_admin; +GRANT SELECT, UPDATE ON ecosystem.contributions TO web_admin; +GRANT SELECT, UPDATE ON ecosystem.people_roles TO web_admin; +GRANT SELECT, UPDATE ON ecosystem.people_contributions TO web_admin; + +-- Make pg api writeable by admins +GRANT SELECT, UPDATE ON macrostrat_api.people TO web_admin; \ No newline at end of file From 9832f34bc0086d8e122d8e9f3cb767f9ecf4772b Mon Sep 17 00:00:00 2001 From: davidsklar99 Date: Mon, 4 Aug 2025 13:49:44 -0400 Subject: [PATCH 03/11] Simplify --- .../cli/database/migrations/people/main.sql | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/cli/macrostrat/cli/database/migrations/people/main.sql b/cli/macrostrat/cli/database/migrations/people/main.sql index 7cb9133b7..09bc9a14a 100644 --- a/cli/macrostrat/cli/database/migrations/people/main.sql +++ b/cli/macrostrat/cli/database/migrations/people/main.sql @@ -53,12 +53,9 @@ INSERT INTO ecosystem.roles (name, description) VALUES ('Collaborator', 'Contributes to joint projects'), ON CONFLICT (name) DO NOTHING; --- Make it writeable by admins -GRANT SELECT, UPDATE ON ecosystem.people TO web_admin; -GRANT SELECT, UPDATE ON ecosystem.roles TO web_admin; -GRANT SELECT, UPDATE ON ecosystem.contributions TO web_admin; -GRANT SELECT, UPDATE ON ecosystem.people_roles TO web_admin; -GRANT SELECT, UPDATE ON ecosystem.people_contributions TO web_admin; +-- DEFAULT PRIVILEGES +ALTER DEFAULT PRIVILEGES IN SCHEMA ecosystem +GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO web_admin; --- Make pg api writeable by admins +-- Macrostrat API Permissions GRANT SELECT, UPDATE ON macrostrat_api.people TO web_admin; \ No newline at end of file From f3a3a113ee7e8d2c26b79dd8387255c51d1e0bf0 Mon Sep 17 00:00:00 2001 From: davidsklar99 Date: Mon, 4 Aug 2025 13:51:51 -0400 Subject: [PATCH 04/11] Change deafualt --- cli/macrostrat/cli/database/migrations/people/main.sql | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cli/macrostrat/cli/database/migrations/people/main.sql b/cli/macrostrat/cli/database/migrations/people/main.sql index 09bc9a14a..b5696872c 100644 --- a/cli/macrostrat/cli/database/migrations/people/main.sql +++ b/cli/macrostrat/cli/database/migrations/people/main.sql @@ -54,8 +54,7 @@ INSERT INTO ecosystem.roles (name, description) VALUES ON CONFLICT (name) DO NOTHING; -- DEFAULT PRIVILEGES -ALTER DEFAULT PRIVILEGES IN SCHEMA ecosystem -GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO web_admin; +GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA ecosystem TO web_admin; -- Macrostrat API Permissions GRANT SELECT, UPDATE ON macrostrat_api.people TO web_admin; \ No newline at end of file From f91fbfdc4f1d5105f130ed0280b29e21a4770ee4 Mon Sep 17 00:00:00 2001 From: davidsklar99 Date: Mon, 4 Aug 2025 14:15:18 -0400 Subject: [PATCH 05/11] syntax fix --- cli/macrostrat/cli/database/migrations/people/main.sql | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/cli/macrostrat/cli/database/migrations/people/main.sql b/cli/macrostrat/cli/database/migrations/people/main.sql index b5696872c..33f2392c7 100644 --- a/cli/macrostrat/cli/database/migrations/people/main.sql +++ b/cli/macrostrat/cli/database/migrations/people/main.sql @@ -50,11 +50,8 @@ INSERT INTO ecosystem.roles (name, description) VALUES ('Researcher', 'Conducts academic or applied research'), ('Developer', 'Writes and maintains software code'), ('Leader', 'Leads research or development projects and mentors others'), - ('Collaborator', 'Contributes to joint projects'), + ('Collaborator', 'Contributes to joint projects') ON CONFLICT (name) DO NOTHING; -- DEFAULT PRIVILEGES -GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA ecosystem TO web_admin; - --- Macrostrat API Permissions -GRANT SELECT, UPDATE ON macrostrat_api.people TO web_admin; \ No newline at end of file +GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA ecosystem TO web_admin; \ No newline at end of file From a2c57556e766d976653fbcc94a79e6a6869f166a Mon Sep 17 00:00:00 2001 From: davidsklar99 Date: Mon, 4 Aug 2025 14:27:07 -0400 Subject: [PATCH 06/11] Update priveledges --- cli/macrostrat/cli/database/migrations/people/main.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/macrostrat/cli/database/migrations/people/main.sql b/cli/macrostrat/cli/database/migrations/people/main.sql index 33f2392c7..cc3625c3a 100644 --- a/cli/macrostrat/cli/database/migrations/people/main.sql +++ b/cli/macrostrat/cli/database/migrations/people/main.sql @@ -54,4 +54,4 @@ INSERT INTO ecosystem.roles (name, description) VALUES ON CONFLICT (name) DO NOTHING; -- DEFAULT PRIVILEGES -GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA ecosystem TO web_admin; \ No newline at end of file +GRANT SELECT, INSERT, UPDATE, DELETE ON macrostrat_api.people_table, macrostrat_api.people_roles_table TO web_admin; \ No newline at end of file From dfd38bcb0d78bfad370ddc4b91650cc68afb05bc Mon Sep 17 00:00:00 2001 From: davidsklar99 Date: Tue, 5 Aug 2025 14:03:48 -0400 Subject: [PATCH 07/11] Permisions work --- cli/macrostrat/cli/database/migrations/people/main.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cli/macrostrat/cli/database/migrations/people/main.sql b/cli/macrostrat/cli/database/migrations/people/main.sql index cc3625c3a..1c0410925 100644 --- a/cli/macrostrat/cli/database/migrations/people/main.sql +++ b/cli/macrostrat/cli/database/migrations/people/main.sql @@ -54,4 +54,5 @@ INSERT INTO ecosystem.roles (name, description) VALUES ON CONFLICT (name) DO NOTHING; -- DEFAULT PRIVILEGES -GRANT SELECT, INSERT, UPDATE, DELETE ON macrostrat_api.people_table, macrostrat_api.people_roles_table TO web_admin; \ No newline at end of file +GRANT SELECT, INSERT, UPDATE, DELETE ON ecosystem.people, macrostrat_api.people TO web_admin; +GRANT USAGE, SELECT ON SEQUENCE ecosystem.people_id_seq TO web_admin; \ No newline at end of file From 580b2e0b3c39ddb72f5874b61d502d15426a1213 Mon Sep 17 00:00:00 2001 From: davidsklar99 Date: Tue, 5 Aug 2025 14:23:45 -0400 Subject: [PATCH 08/11] Confirmed works people --- .../cli/database/migrations/people/main.sql | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/cli/macrostrat/cli/database/migrations/people/main.sql b/cli/macrostrat/cli/database/migrations/people/main.sql index 1c0410925..8fa069e04 100644 --- a/cli/macrostrat/cli/database/migrations/people/main.sql +++ b/cli/macrostrat/cli/database/migrations/people/main.sql @@ -1,9 +1,10 @@ --- SCHEMA + + -- SCHEMA CREATE SCHEMA IF NOT EXISTS ecosystem; -- PEOPLE CREATE TABLE IF NOT EXISTS ecosystem.people ( - id serial PRIMARY KEY, + person_id serial PRIMARY KEY, name text NOT NULL, email text NOT NULL UNIQUE, title text NOT NULL, @@ -15,22 +16,22 @@ CREATE TABLE IF NOT EXISTS ecosystem.people ( -- ROLES CREATE TABLE IF NOT EXISTS ecosystem.roles ( - id serial PRIMARY KEY, + role_id serial PRIMARY KEY, name text NOT NULL UNIQUE, description text NOT NULL ); -- PEOPLE-ROLES MAPPING CREATE TABLE IF NOT EXISTS ecosystem.people_roles ( - person_id integer NOT NULL REFERENCES ecosystem.people(id) ON DELETE CASCADE, - role_id integer NOT NULL REFERENCES ecosystem.roles(id) ON DELETE CASCADE, + person_id integer NOT NULL REFERENCES ecosystem.people(person_id) ON DELETE CASCADE, + role_id integer NOT NULL REFERENCES ecosystem.roles(role_id) ON DELETE CASCADE, PRIMARY KEY (person_id, role_id) ); -- CONTRIBUTIONS CREATE TABLE IF NOT EXISTS ecosystem.contributions ( - id serial PRIMARY KEY, - person_id integer NOT NULL REFERENCES ecosystem.people(id) ON DELETE CASCADE, + contribution_id serial PRIMARY KEY, + person_id integer NOT NULL REFERENCES ecosystem.people(person_id) ON DELETE CASCADE, contribution text NOT NULL, description text, date timestamp with time zone NOT NULL DEFAULT now(), @@ -39,8 +40,8 @@ CREATE TABLE IF NOT EXISTS ecosystem.contributions ( -- PEOPLE-CONTRIBUTIONS MAPPING CREATE TABLE IF NOT EXISTS ecosystem.people_contributions ( - person_id integer NOT NULL REFERENCES ecosystem.people(id) ON DELETE CASCADE, - contribution_id integer NOT NULL REFERENCES ecosystem.contributions(id) ON DELETE CASCADE, + person_id integer NOT NULL REFERENCES ecosystem.people(person_id) ON DELETE CASCADE, + contribution_id integer NOT NULL REFERENCES ecosystem.contributions(contribution_id) ON DELETE CASCADE, PRIMARY KEY (person_id, contribution_id) ); @@ -53,6 +54,19 @@ INSERT INTO ecosystem.roles (name, description) VALUES ('Collaborator', 'Contributes to joint projects') ON CONFLICT (name) DO NOTHING; +-- CREATE POSTGREST VIEWS +CREATE OR REPLACE VIEW macrostrat_api.people AS + SELECT * FROM ecosystem.people; + +CREATE OR REPLACE VIEW macrostrat_api.people_roles AS + SELECT * FROM ecosystem.people_roles; + -- DEFAULT PRIVILEGES -GRANT SELECT, INSERT, UPDATE, DELETE ON ecosystem.people, macrostrat_api.people TO web_admin; -GRANT USAGE, SELECT ON SEQUENCE ecosystem.people_id_seq TO web_admin; \ No newline at end of file +GRANT SELECT, INSERT, UPDATE, DELETE ON + ecosystem.people, + ecosystem.people_roles, + macrostrat_api.people, + macrostrat_api.people_roles +TO web_admin; + +GRANT USAGE, SELECT ON SEQUENCE ecosystem.people_person_id_seq TO web_admin; \ No newline at end of file From 357c73ef3d91d24e041e58e3335f434df672cb1a Mon Sep 17 00:00:00 2001 From: davidsklar99 Date: Tue, 5 Aug 2025 14:25:15 -0400 Subject: [PATCH 09/11] Add view --- .../cli/database/migrations/people/main.sql | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/cli/macrostrat/cli/database/migrations/people/main.sql b/cli/macrostrat/cli/database/migrations/people/main.sql index 8fa069e04..2bb7d74bd 100644 --- a/cli/macrostrat/cli/database/migrations/people/main.sql +++ b/cli/macrostrat/cli/database/migrations/people/main.sql @@ -61,12 +61,28 @@ CREATE OR REPLACE VIEW macrostrat_api.people AS CREATE OR REPLACE VIEW macrostrat_api.people_roles AS SELECT * FROM ecosystem.people_roles; +CREATE OR REPLACE VIEW macrostrat_api.people_with_roles AS + SELECT p.id, + p.name, + p.email, + p.title, + p.website, + p.img_id, + p.active_start, + p.active_end, + COALESCE(json_agg(json_build_object('name', r.name, 'description', r.description)) FILTER (WHERE r.id IS NOT NULL)) AS roles + FROM ecosystem.people p + LEFT JOIN ecosystem.people_roles pr ON p.id = pr.person_id + LEFT JOIN ecosystem.roles r ON pr.role_id = r.id + GROUP BY p.id; + + -- DEFAULT PRIVILEGES GRANT SELECT, INSERT, UPDATE, DELETE ON ecosystem.people, ecosystem.people_roles, macrostrat_api.people, macrostrat_api.people_roles -TO web_admin; +TO web_anon; -GRANT USAGE, SELECT ON SEQUENCE ecosystem.people_person_id_seq TO web_admin; \ No newline at end of file +GRANT USAGE, SELECT ON SEQUENCE ecosystem.people_person_id_seq TO web_anon; \ No newline at end of file From 7472472b7b91fda3f797a943909650327ac05fd4 Mon Sep 17 00:00:00 2001 From: davidsklar99 Date: Tue, 5 Aug 2025 14:26:19 -0400 Subject: [PATCH 10/11] Change keys --- .../cli/database/migrations/people/main.sql | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/cli/macrostrat/cli/database/migrations/people/main.sql b/cli/macrostrat/cli/database/migrations/people/main.sql index 2bb7d74bd..90a955406 100644 --- a/cli/macrostrat/cli/database/migrations/people/main.sql +++ b/cli/macrostrat/cli/database/migrations/people/main.sql @@ -62,7 +62,8 @@ CREATE OR REPLACE VIEW macrostrat_api.people_roles AS SELECT * FROM ecosystem.people_roles; CREATE OR REPLACE VIEW macrostrat_api.people_with_roles AS - SELECT p.id, + SELECT + p.person_id, p.name, p.email, p.title, @@ -70,11 +71,11 @@ CREATE OR REPLACE VIEW macrostrat_api.people_with_roles AS p.img_id, p.active_start, p.active_end, - COALESCE(json_agg(json_build_object('name', r.name, 'description', r.description)) FILTER (WHERE r.id IS NOT NULL)) AS roles + COALESCE(json_agg(json_build_object('name', r.name, 'description', r.description)) FILTER (WHERE r.role_id IS NOT NULL)) AS roles FROM ecosystem.people p - LEFT JOIN ecosystem.people_roles pr ON p.id = pr.person_id - LEFT JOIN ecosystem.roles r ON pr.role_id = r.id - GROUP BY p.id; + LEFT JOIN ecosystem.people_roles pr ON p.person_id = pr.person_id + LEFT JOIN ecosystem.roles r ON pr.role_id = r.role_id + GROUP BY p.person_id; -- DEFAULT PRIVILEGES From 853269d26f501baa77fdab0d013a0eccff9d57ea Mon Sep 17 00:00:00 2001 From: davidsklar99 Date: Wed, 6 Aug 2025 14:42:01 -0400 Subject: [PATCH 11/11] Add roles --- cli/macrostrat/cli/database/migrations/people/main.sql | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cli/macrostrat/cli/database/migrations/people/main.sql b/cli/macrostrat/cli/database/migrations/people/main.sql index 90a955406..aa656fb04 100644 --- a/cli/macrostrat/cli/database/migrations/people/main.sql +++ b/cli/macrostrat/cli/database/migrations/people/main.sql @@ -61,6 +61,9 @@ CREATE OR REPLACE VIEW macrostrat_api.people AS CREATE OR REPLACE VIEW macrostrat_api.people_roles AS SELECT * FROM ecosystem.people_roles; +CREATE OR REPLACE VIEW macrostrat_api.roles AS + SELECT * FROM ecosystem.roles; + CREATE OR REPLACE VIEW macrostrat_api.people_with_roles AS SELECT p.person_id, @@ -84,6 +87,6 @@ GRANT SELECT, INSERT, UPDATE, DELETE ON ecosystem.people_roles, macrostrat_api.people, macrostrat_api.people_roles -TO web_anon; +TO web_admin; -GRANT USAGE, SELECT ON SEQUENCE ecosystem.people_person_id_seq TO web_anon; \ No newline at end of file +GRANT USAGE, SELECT ON SEQUENCE ecosystem.people_person_id_seq TO web_admin; \ No newline at end of file