From 2ab2cf61ed8297fd34f12d7a78316fafc8dd51fd Mon Sep 17 00:00:00 2001 From: optclblast Date: Sun, 26 May 2024 01:55:35 +0300 Subject: [PATCH] tmp --- backend/internal/interface/rest/server.go | 4 ++- backend/internal/pkg/models/models.go | 22 +++++++++++++++ backend/migrations/blockd.sql | 33 +++++++++++++++++++---- 3 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 backend/internal/pkg/models/models.go diff --git a/backend/internal/interface/rest/server.go b/backend/internal/interface/rest/server.go index d38eb15..3079e13 100644 --- a/backend/internal/interface/rest/server.go +++ b/backend/internal/interface/rest/server.go @@ -131,8 +131,10 @@ func (s *Server) buildRouter() { r.Put("/", nil) // todo }) + // open invite link + r.Get("/invite/{hash}", s.handle(nil, "invite_open")) // join via invite link - r.Post("/invite/{hash}", s.handle(s.controllers.Auth.JoinWithInvite, "invite_join")) + r.Post("/invite/{hash}/join", s.handle(s.controllers.Auth.JoinWithInvite, "invite_join")) r.Route("/participants", func(r chi.Router) { r.Get("/", s.handle(s.controllers.Participants.List, "participants_list")) diff --git a/backend/internal/pkg/models/models.go b/backend/internal/pkg/models/models.go new file mode 100644 index 0000000..02ce654 --- /dev/null +++ b/backend/internal/pkg/models/models.go @@ -0,0 +1,22 @@ +package models + +import ( + "time" + + "github.com/google/uuid" +) + +type Multisig struct { + ID uuid.UUID + Title string + OrganizationID uuid.UUID + Owners []OrganizationParticipant + ConfirmationsRequired int +} + +type MultisigConfirmation struct { + MultisigID uuid.UUID + Owner OrganizationParticipant + CreatedAt time.Time + UpdatedAt time.Time +} diff --git a/backend/migrations/blockd.sql b/backend/migrations/blockd.sql index 2fed27e..1bac109 100644 --- a/backend/migrations/blockd.sql +++ b/backend/migrations/blockd.sql @@ -138,23 +138,26 @@ create table contracts ( id uuid primary key, title varchar(250) default 'New Contract', description text not null, - address bytea not null, - payload bytea not null, - created_by uuid not null references users(id), organization_id uuid not null references organizations(id), - status smallint default 0, tx_index bytea default null, - + multisig bytea default null, created_at timestamp default current_timestamp, updated_at timestamp default current_timestamp ); +create intex if not exists idx_contracts_organization_id_multisig + on contracts (organization_id, multisig); + +create intex if not exists idx_contracts_organization_id_created_by + on contracts (organization_id, created_by); + create table multisigs ( id uuid primary key, + organization_id uuid not null references organizations(id), title varchar(350) default 'New Multi-Sig' ); @@ -166,9 +169,29 @@ create table multisig_owners ( primary key (multisig_id, owner_id) ); +create intex if not exists idx_multisig_owners_multisig_id + on multisig_owners (multisig_id); + +create intex if not exists idx_multisig_owners_owner_id + on multisig_owners (owner_id); + create table multisig_confirmations ( multisig_id uuid references multisigs(id), owner_id uuid references users(id), created_at timestamp default current_timestamp, primary key (multisig_id, owner_id) +); + +create intex if not exists idx_multisig_confirmations_owners_multisig_id + on multisig_confirmations (multisig_id); + +create intex if not exists idx_multisig_confirmations_owners_owner_id + on multisig_confirmations (owner_id); + +create table invites ( + link_hash bytea primary key, + created_by uuid not null references users(id), + created_at timestamp default current_timestamp, + expired_at timestamp default null, + used_at timestamp default null ); \ No newline at end of file