This commit is contained in:
r8zavetr8v 2024-05-26 01:55:35 +03:00
parent 2a249e3979
commit 2ab2cf61ed
3 changed files with 53 additions and 6 deletions

View File

@ -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"))

View File

@ -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
}

View File

@ -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
);