feat: add create salty user
This commit is contained in:
@@ -54,3 +54,13 @@ func (p *PageInput) GetCount(v int64) int64 {
|
||||
}
|
||||
return *p.Count
|
||||
}
|
||||
|
||||
type SaltyUser struct {
|
||||
Nick string `json:"nick"`
|
||||
Pubkey string `json:"pubkey"`
|
||||
Inbox string `json:"inbox"`
|
||||
}
|
||||
|
||||
func (s SaltyUser) Endpoint(ctx context.Context) string {
|
||||
return "https://ev.sour.is/inbox/" + s.Inbox
|
||||
}
|
||||
|
||||
@@ -2,10 +2,14 @@ package gql_ev
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/sha256"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/keys-pub/keys"
|
||||
"github.com/sour-is/ev/internal/logz"
|
||||
"github.com/sour-is/ev/pkg/domain"
|
||||
"github.com/sour-is/ev/pkg/es"
|
||||
"github.com/sour-is/ev/pkg/msgbus"
|
||||
"go.opentelemetry.io/otel/metric/instrument/syncint64"
|
||||
@@ -145,3 +149,40 @@ func (r *Resolver) PostAdded(ctx context.Context, streamID string, after int64)
|
||||
|
||||
return ch, nil
|
||||
}
|
||||
|
||||
func (r *Resolver) CreateSaltyUser(ctx context.Context, nick string, pub string) (*SaltyUser, error) {
|
||||
streamID := fmt.Sprintf("saltyuser-%x", sha256.Sum256([]byte(strings.ToLower(nick))))
|
||||
|
||||
key, err := keys.NewEdX25519PublicKeyFromID(keys.ID(pub))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
a, err := es.Create(ctx, r.es, streamID, func(ctx context.Context, agg *domain.SaltyUser) error {
|
||||
return agg.OnUserRegister(nick, key)
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &SaltyUser{
|
||||
Nick: nick,
|
||||
Pubkey: pub,
|
||||
Inbox: a.Inbox.String(),
|
||||
}, err
|
||||
}
|
||||
|
||||
func (r *Resolver) SaltyUser(ctx context.Context, nick string) (*SaltyUser, error) {
|
||||
streamID := fmt.Sprintf("saltyuser-%x", sha256.Sum256([]byte(strings.ToLower(nick))))
|
||||
|
||||
a, err := es.Update(ctx, r.es, streamID, func(ctx context.Context, agg *domain.SaltyUser) error { return nil })
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &SaltyUser{
|
||||
Nick: nick,
|
||||
Pubkey: a.Pubkey.String(),
|
||||
Inbox: a.Inbox.String(),
|
||||
}, err
|
||||
}
|
||||
|
||||
14
api/gql_ev/salty.graphqls
Normal file
14
api/gql_ev/salty.graphqls
Normal file
@@ -0,0 +1,14 @@
|
||||
extend type Query {
|
||||
saltyUser(nick: String!): SaltyUser
|
||||
}
|
||||
|
||||
extend type Mutation {
|
||||
createSaltyUser(nick: String! pubkey: String!): SaltyUser
|
||||
}
|
||||
|
||||
type SaltyUser {
|
||||
nick: String!
|
||||
pubkey: String!
|
||||
inbox: String!
|
||||
endpoint: String!
|
||||
}
|
||||
Reference in New Issue
Block a user