feat: organizations and API keys
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
-- +goose Up
|
||||
-- Add Unbound Software Development organization
|
||||
insert into aggregates (id, name)
|
||||
values ('d46ffcb0-19e8-4769-8697-590326ef7b51', 'domain.Organization');
|
||||
|
||||
insert into events (name, aggregate_id, sequence_no, payload, tstamp, aggregate_name)
|
||||
values ('domain.OrganizationAdded', 'd46ffcb0-19e8-4769-8697-590326ef7b51', 1, '{"id":"d46ffcb0-19e8-4769-8697-590326ef7b51","time":"2023-04-26T14:46:04.43462+02:00","name":"Unbound Software Development","initiator":"google-oauth2|101953650269257914934"}', '2023-04-26T14:46:04.43462+02:00', 'domain.Organization');
|
||||
|
||||
-- Add API keys
|
||||
insert into events (name, aggregate_id, sequence_no, payload, tstamp, aggregate_name)
|
||||
values ('domain.APIKeyAdded', 'd46ffcb0-19e8-4769-8697-590326ef7b51', 2,
|
||||
'{"id":"d46ffcb0-19e8-4769-8697-590326ef7b51","time":"2023-04-26T15:46:54.181929+02:00","organizationId":"","name":"CI","key":"dXNfYWtfeUl2R3RRQUJQTmJzVEFrUeOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhV","refs":["Shiny@staging","Shiny@prod"],"read":false,"publish":true,"initiator":"google-oauth2|101953650269257914934"}',
|
||||
'2023-04-26 15:46:54.181929 +02:00', 'domain.Organization');
|
||||
|
||||
insert into events (name, aggregate_id, sequence_no, payload, tstamp, aggregate_name)
|
||||
values ('domain.APIKeyAdded', 'd46ffcb0-19e8-4769-8697-590326ef7b51', 3,
|
||||
'{"id":"d46ffcb0-19e8-4769-8697-590326ef7b51","time":"2023-04-26T15:52:55.955203+02:00","organizationId":"","name":"Gateway","key":"dXNfYWtfdnkzSkRseDNlSDNjcnZzOeOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhV","refs":["Shiny@staging","Shiny@prod"],"read":true,"publish":false,"initiator":"google-oauth2|101953650269257914934"}',
|
||||
'2023-04-26 15:52:55.955203 +02:00', 'domain.Organization');
|
||||
|
||||
insert into events (name, aggregate_id, sequence_no, payload, tstamp, aggregate_name)
|
||||
values ('domain.APIKeyAdded', 'd46ffcb0-19e8-4769-8697-590326ef7b51', 4,
|
||||
'{"id":"d46ffcb0-19e8-4769-8697-590326ef7b51","time":"2023-04-26T16:30:00.0011+02:00","organizationId":"","name":"Local dev","key":"dXNfYWtfM0kzaGZndmVaQllyQzdjVOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhV","refs":["Shiny@dev"],"read":true,"publish":true,"initiator":"google-oauth2|101953650269257914934"}',
|
||||
'2023-04-26 16:30:00.001100 +02:00', 'domain.Organization');
|
||||
|
||||
insert into events (name, aggregate_id, sequence_no, payload, tstamp, aggregate_name)
|
||||
values ('domain.APIKeyAdded', 'd46ffcb0-19e8-4769-8697-590326ef7b51', 5,
|
||||
'{"id":"d46ffcb0-19e8-4769-8697-590326ef7b51","time":"2023-04-27T07:43:26.599544+02:00","organizationId":"","name":"Acctest","key":"dXNfYWtfdlVqMzdBMXVraklmaGtKSOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhV","refs":["Shiny@test"],"read":true,"publish":true,"initiator":"google-oauth2|101953650269257914934"}',
|
||||
'2023-04-27 07:43:26.599544 +02:00', 'domain.Organization');
|
||||
|
||||
-- Update events since json-tags were added
|
||||
UPDATE events e
|
||||
SET payload = jsonb_build_object(
|
||||
'id', payload::jsonb ->> 'id',
|
||||
'time', payload::jsonb ->> 'time',
|
||||
'ref', payload::jsonb ->> 'Ref',
|
||||
'sdl', payload::jsonb ->> 'Sdl',
|
||||
'url', payload::jsonb ->> 'Url',
|
||||
'wsUrl', payload::jsonb ->> 'WSUrl',
|
||||
'service', payload::jsonb ->> 'Service',
|
||||
'initiator', 'CI'
|
||||
)
|
||||
WHERE e.name = 'domain.SubGraphUpdated';
|
||||
|
||||
-- Add organization id to all existing subgraphs
|
||||
update events e
|
||||
set payload = jsonb_set(payload::jsonb, '{organizationId}', '"d46ffcb0-19e8-4769-8697-590326ef7b51"', true)
|
||||
where e.name = 'domain.SubGraphUpdated';
|
||||
|
||||
DELETE
|
||||
from snapshots;
|
||||
|
||||
-- +goose Down
|
||||
@@ -1,7 +1,10 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
"embed"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
"github.com/pressly/goose/v3"
|
||||
)
|
||||
|
||||
func SetupDB(driverName, url string) (*sqlx.DB, error) {
|
||||
@@ -25,3 +28,13 @@ func SetupDB(driverName, url string) (*sqlx.DB, error) {
|
||||
//
|
||||
// return goose.Up(db.DB, "migrations")
|
||||
//}
|
||||
|
||||
//go:embed event_store_migrations/*.sql
|
||||
var embedEventStoreMigrations embed.FS
|
||||
|
||||
func RunEventStoreMigrations(db *sqlx.DB) error {
|
||||
goose.SetTableName("goose_db_version_event")
|
||||
goose.SetBaseFS(embedEventStoreMigrations)
|
||||
|
||||
return goose.Up(db.DB, "event_store_migrations")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user