mega schema overhaul

* create consolidated schema with new members table
* update interfaces
* remove allow_list and replace it with members
* update roomdb types
* rename User to Member
* add role enums
* update insert-user
This commit is contained in:
Henry 2021-03-18 17:49:52 +01:00
parent 2cc86dbae6
commit 5edd9b0066
37 changed files with 4714 additions and 2517 deletions

View File

@ -1,35 +1,77 @@
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
// insert-user is a utility to create a new member and password
package main package main
import ( import (
"bytes" "bytes"
"context" "context"
"flag"
"fmt" "fmt"
"os" "os"
"os/user"
"path/filepath"
"strings"
"syscall" "syscall"
refs "go.mindeco.de/ssb-refs"
"github.com/ssb-ngi-pointer/go-ssb-room/internal/repo"
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb"
_ "github.com/mattn/go-sqlite3" _ "github.com/mattn/go-sqlite3"
"golang.org/x/crypto/ssh/terminal" "golang.org/x/crypto/ssh/terminal"
"github.com/ssb-ngi-pointer/go-ssb-room/internal/repo"
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb/sqlite" "github.com/ssb-ngi-pointer/go-ssb-room/roomdb/sqlite"
) )
func main() { func main() {
u, err := user.Current()
check(err)
if len(os.Args) != 3 { var (
fmt.Fprintf(os.Stderr, "usage: %s <repo-location> <user-name>\n", os.Args[0]) repoPath string
fmt.Fprintf(os.Stderr, "repo-location: default is $HOME/.ssb-go-room\n") role roomdb.Role
)
flag.StringVar(&repoPath, "repo", filepath.Join(u.HomeDir, ".ssb-go-room"), "where the repo of the room is located")
flag.Func("role", "which role the new member should have (ie moderator, admin, member. defaults to admin)", func(val string) error {
if val == "" {
role = roomdb.RoleAdmin
return nil
}
switch strings.ToLower(val) {
case "admin":
role = roomdb.RoleAdmin
case "moderator":
role = roomdb.RoleAdmin
case "member":
role = roomdb.RoleMember
default:
return fmt.Errorf("unknown member role: %q", val)
}
return nil
})
flag.Parse()
if len(os.Args) != 2 {
fmt.Fprintf(os.Stderr, "usage: %s <user-name> <@theirPublicKey.ed25519>\n", os.Args[0])
flag.Usage()
os.Exit(1) os.Exit(1)
return return
} }
r := repo.New(os.Args[1]) r := repo.New(repoPath)
db, err := sqlite.Open(r) db, err := sqlite.Open(r)
check(err) check(err)
defer db.Close() defer db.Close()
pubKey, err := refs.ParseFeedRef(os.Args[1])
fmt.Fprintln(os.Stderr, "Enter Password: ") fmt.Fprintln(os.Stderr, "Enter Password: ")
bytePassword, err := terminal.ReadPassword(int(syscall.Stdin)) bytePassword, err := terminal.ReadPassword(int(syscall.Stdin))
check(err) check(err)
@ -45,10 +87,13 @@ func main() {
} }
ctx := context.Background() ctx := context.Background()
uid, err := db.AuthFallback.Create(ctx, os.Args[2], bytePassword) mid, err := db.Members.Add(ctx, os.Args[1], *pubKey, role)
check(err) check(err)
fmt.Fprintln(os.Stderr, "created user with ID", uid) err = db.AuthFallback.Create(ctx, mid, os.Args[1], bytePassword)
check(err)
fmt.Fprintln(os.Stderr, "created member with ID", mid)
} }
func check(err error) { func check(err error) {

View File

@ -17,22 +17,54 @@ import (
refs "go.mindeco.de/ssb-refs" refs "go.mindeco.de/ssb-refs"
) )
// AuthFallbackService might be helpful for scenarios where one lost access to his ssb device or key // AuthFallbackService allows password authentication which might be helpful for scenarios
// where one lost access to his ssb device or key.
type AuthFallbackService interface { type AuthFallbackService interface {
// Check receives the username and password (in clear) and checks them accordingly. // Check receives the username and password (in clear) and checks them accordingly.
// If it's a valid combination it returns the user ID, or an error if they are not. // If it's a valid combination it returns the user ID, or an error if they are not.
auth.Auther auth.Auther
Create(ctx context.Context, user string, password []byte) (int64, error) Create(_ context.Context, memberID int64, login string, password []byte) error
GetByID(ctx context.Context, uid int64) (*User, error) // GetByID(context.Context, int64) (User, error)
// ListAll()
// ListByMember()
// Remove(pwid)
} }
// needed?! not sure we need to hold the challanges
// AuthWithSSBService defines functions needed for the challange/response system of sign-in with ssb // AuthWithSSBService defines functions needed for the challange/response system of sign-in with ssb
type AuthWithSSBService interface{} type AuthWithSSBService interface{}
// AllowListService changes the lists of people that are allowed to get into the room // MembersService stores and retreives the list of internal users (members, mods and admins).
type AllowListService interface { type MembersService interface {
// Add adds a new member
Add(_ context.Context, nickName string, pubKey refs.FeedRef, r Role) (int64, error)
// HasFeed returns true if a feed is on the list.
HasFeed(context.Context, refs.FeedRef) bool
// HasFeed returns true if a feed is on the list.
HasID(context.Context, int64) bool
// GetByID returns the list entry for that ID or an error
GetByID(context.Context, int64) (Member, error)
// List returns a list of all the members.
List(context.Context) ([]Member, error)
// RemoveFeed removes the feed from the list.
RemoveFeed(context.Context, refs.FeedRef) error
// RemoveID removes the feed for the ID from the list.
RemoveID(context.Context, int64) error
// SetRole
SetRole(context.Context, int64, Role) error
}
// DeniedListService changes the lists of people that are Denieded to get into the room
type DeniedListService interface {
// Add adds the feed to the list. // Add adds the feed to the list.
Add(context.Context, refs.FeedRef) error Add(context.Context, refs.FeedRef) error
@ -46,7 +78,7 @@ type AllowListService interface {
GetByID(context.Context, int64) (ListEntry, error) GetByID(context.Context, int64) (ListEntry, error)
// List returns a list of all the feeds. // List returns a list of all the feeds.
List(context.Context) (ListEntries, error) List(context.Context) ([]ListEntry, error)
// RemoveFeed removes the feed from the list. // RemoveFeed removes the feed from the list.
RemoveFeed(context.Context, refs.FeedRef) error RemoveFeed(context.Context, refs.FeedRef) error
@ -55,8 +87,8 @@ type AllowListService interface {
RemoveID(context.Context, int64) error RemoveID(context.Context, int64) error
} }
// AliasService manages alias handle registration and lookup // AliasesService manages alias handle registration and lookup
type AliasService interface { type AliasesService interface {
// Resolve returns all the relevant information for that alias or an error if it doesnt exist // Resolve returns all the relevant information for that alias or an error if it doesnt exist
Resolve(context.Context, string) (Alias, error) Resolve(context.Context, string) (Alias, error)
@ -73,8 +105,8 @@ type AliasService interface {
Revoke(ctx context.Context, alias string) error Revoke(ctx context.Context, alias string) error
} }
// InviteService manages creation and consumption of invite tokens for joining the room. // InvitesService manages creation and consumption of invite tokens for joining the room.
type InviteService interface { type InvitesService interface {
// Create creates a new invite for a new member. It returns the token or an error. // Create creates a new invite for a new member. It returns the token or an error.
// createdBy is user ID of the admin or moderator who created it. // createdBy is user ID of the admin or moderator who created it.
// aliasSuggestion is optional (empty string is fine) but can be used to disambiguate open invites. (See https://github.com/ssb-ngi-pointer/rooms2/issues/21) // aliasSuggestion is optional (empty string is fine) but can be used to disambiguate open invites. (See https://github.com/ssb-ngi-pointer/rooms2/issues/21)
@ -125,16 +157,18 @@ type NoticesService interface {
// for tests we use generated mocks from these interfaces created with https://github.com/maxbrunsfeld/counterfeiter // for tests we use generated mocks from these interfaces created with https://github.com/maxbrunsfeld/counterfeiter
//go:generate counterfeiter -o mockdb/aliases.go . AliasesService
//go:generate counterfeiter -o mockdb/auth.go . AuthWithSSBService //go:generate counterfeiter -o mockdb/auth.go . AuthWithSSBService
//go:generate counterfeiter -o mockdb/auth_fallback.go . AuthFallbackService //go:generate counterfeiter -o mockdb/auth_fallback.go . AuthFallbackService
//go:generate counterfeiter -o mockdb/allow.go . AllowListService //go:generate counterfeiter -o mockdb/denied.go . DeniedListService
//go:generate counterfeiter -o mockdb/alias.go . AliasService
//go:generate counterfeiter -o mockdb/invite.go . InviteService
//go:generate counterfeiter -o mockdb/fixed_pages.go . PinnedNoticesService //go:generate counterfeiter -o mockdb/fixed_pages.go . PinnedNoticesService
//go:generate counterfeiter -o mockdb/invites.go . InvitesService
//go:generate counterfeiter -o mockdb/members.go . MembersService
//go:generate counterfeiter -o mockdb/pages.go . NoticesService //go:generate counterfeiter -o mockdb/pages.go . NoticesService

View File

@ -9,7 +9,7 @@ import (
refs "go.mindeco.de/ssb-refs" refs "go.mindeco.de/ssb-refs"
) )
type FakeAliasService struct { type FakeAliasesService struct {
GetByIDStub func(context.Context, int64) (roomdb.Alias, error) GetByIDStub func(context.Context, int64) (roomdb.Alias, error)
getByIDMutex sync.RWMutex getByIDMutex sync.RWMutex
getByIDArgsForCall []struct { getByIDArgsForCall []struct {
@ -81,7 +81,7 @@ type FakeAliasService struct {
invocationsMutex sync.RWMutex invocationsMutex sync.RWMutex
} }
func (fake *FakeAliasService) GetByID(arg1 context.Context, arg2 int64) (roomdb.Alias, error) { func (fake *FakeAliasesService) GetByID(arg1 context.Context, arg2 int64) (roomdb.Alias, error) {
fake.getByIDMutex.Lock() fake.getByIDMutex.Lock()
ret, specificReturn := fake.getByIDReturnsOnCall[len(fake.getByIDArgsForCall)] ret, specificReturn := fake.getByIDReturnsOnCall[len(fake.getByIDArgsForCall)]
fake.getByIDArgsForCall = append(fake.getByIDArgsForCall, struct { fake.getByIDArgsForCall = append(fake.getByIDArgsForCall, struct {
@ -101,26 +101,26 @@ func (fake *FakeAliasService) GetByID(arg1 context.Context, arg2 int64) (roomdb.
return fakeReturns.result1, fakeReturns.result2 return fakeReturns.result1, fakeReturns.result2
} }
func (fake *FakeAliasService) GetByIDCallCount() int { func (fake *FakeAliasesService) GetByIDCallCount() int {
fake.getByIDMutex.RLock() fake.getByIDMutex.RLock()
defer fake.getByIDMutex.RUnlock() defer fake.getByIDMutex.RUnlock()
return len(fake.getByIDArgsForCall) return len(fake.getByIDArgsForCall)
} }
func (fake *FakeAliasService) GetByIDCalls(stub func(context.Context, int64) (roomdb.Alias, error)) { func (fake *FakeAliasesService) GetByIDCalls(stub func(context.Context, int64) (roomdb.Alias, error)) {
fake.getByIDMutex.Lock() fake.getByIDMutex.Lock()
defer fake.getByIDMutex.Unlock() defer fake.getByIDMutex.Unlock()
fake.GetByIDStub = stub fake.GetByIDStub = stub
} }
func (fake *FakeAliasService) GetByIDArgsForCall(i int) (context.Context, int64) { func (fake *FakeAliasesService) GetByIDArgsForCall(i int) (context.Context, int64) {
fake.getByIDMutex.RLock() fake.getByIDMutex.RLock()
defer fake.getByIDMutex.RUnlock() defer fake.getByIDMutex.RUnlock()
argsForCall := fake.getByIDArgsForCall[i] argsForCall := fake.getByIDArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2 return argsForCall.arg1, argsForCall.arg2
} }
func (fake *FakeAliasService) GetByIDReturns(result1 roomdb.Alias, result2 error) { func (fake *FakeAliasesService) GetByIDReturns(result1 roomdb.Alias, result2 error) {
fake.getByIDMutex.Lock() fake.getByIDMutex.Lock()
defer fake.getByIDMutex.Unlock() defer fake.getByIDMutex.Unlock()
fake.GetByIDStub = nil fake.GetByIDStub = nil
@ -130,7 +130,7 @@ func (fake *FakeAliasService) GetByIDReturns(result1 roomdb.Alias, result2 error
}{result1, result2} }{result1, result2}
} }
func (fake *FakeAliasService) GetByIDReturnsOnCall(i int, result1 roomdb.Alias, result2 error) { func (fake *FakeAliasesService) GetByIDReturnsOnCall(i int, result1 roomdb.Alias, result2 error) {
fake.getByIDMutex.Lock() fake.getByIDMutex.Lock()
defer fake.getByIDMutex.Unlock() defer fake.getByIDMutex.Unlock()
fake.GetByIDStub = nil fake.GetByIDStub = nil
@ -146,7 +146,7 @@ func (fake *FakeAliasService) GetByIDReturnsOnCall(i int, result1 roomdb.Alias,
}{result1, result2} }{result1, result2}
} }
func (fake *FakeAliasService) List(arg1 context.Context) ([]roomdb.Alias, error) { func (fake *FakeAliasesService) List(arg1 context.Context) ([]roomdb.Alias, error) {
fake.listMutex.Lock() fake.listMutex.Lock()
ret, specificReturn := fake.listReturnsOnCall[len(fake.listArgsForCall)] ret, specificReturn := fake.listReturnsOnCall[len(fake.listArgsForCall)]
fake.listArgsForCall = append(fake.listArgsForCall, struct { fake.listArgsForCall = append(fake.listArgsForCall, struct {
@ -165,26 +165,26 @@ func (fake *FakeAliasService) List(arg1 context.Context) ([]roomdb.Alias, error)
return fakeReturns.result1, fakeReturns.result2 return fakeReturns.result1, fakeReturns.result2
} }
func (fake *FakeAliasService) ListCallCount() int { func (fake *FakeAliasesService) ListCallCount() int {
fake.listMutex.RLock() fake.listMutex.RLock()
defer fake.listMutex.RUnlock() defer fake.listMutex.RUnlock()
return len(fake.listArgsForCall) return len(fake.listArgsForCall)
} }
func (fake *FakeAliasService) ListCalls(stub func(context.Context) ([]roomdb.Alias, error)) { func (fake *FakeAliasesService) ListCalls(stub func(context.Context) ([]roomdb.Alias, error)) {
fake.listMutex.Lock() fake.listMutex.Lock()
defer fake.listMutex.Unlock() defer fake.listMutex.Unlock()
fake.ListStub = stub fake.ListStub = stub
} }
func (fake *FakeAliasService) ListArgsForCall(i int) context.Context { func (fake *FakeAliasesService) ListArgsForCall(i int) context.Context {
fake.listMutex.RLock() fake.listMutex.RLock()
defer fake.listMutex.RUnlock() defer fake.listMutex.RUnlock()
argsForCall := fake.listArgsForCall[i] argsForCall := fake.listArgsForCall[i]
return argsForCall.arg1 return argsForCall.arg1
} }
func (fake *FakeAliasService) ListReturns(result1 []roomdb.Alias, result2 error) { func (fake *FakeAliasesService) ListReturns(result1 []roomdb.Alias, result2 error) {
fake.listMutex.Lock() fake.listMutex.Lock()
defer fake.listMutex.Unlock() defer fake.listMutex.Unlock()
fake.ListStub = nil fake.ListStub = nil
@ -194,7 +194,7 @@ func (fake *FakeAliasService) ListReturns(result1 []roomdb.Alias, result2 error)
}{result1, result2} }{result1, result2}
} }
func (fake *FakeAliasService) ListReturnsOnCall(i int, result1 []roomdb.Alias, result2 error) { func (fake *FakeAliasesService) ListReturnsOnCall(i int, result1 []roomdb.Alias, result2 error) {
fake.listMutex.Lock() fake.listMutex.Lock()
defer fake.listMutex.Unlock() defer fake.listMutex.Unlock()
fake.ListStub = nil fake.ListStub = nil
@ -210,7 +210,7 @@ func (fake *FakeAliasService) ListReturnsOnCall(i int, result1 []roomdb.Alias, r
}{result1, result2} }{result1, result2}
} }
func (fake *FakeAliasService) Register(arg1 context.Context, arg2 string, arg3 refs.FeedRef, arg4 []byte) error { func (fake *FakeAliasesService) Register(arg1 context.Context, arg2 string, arg3 refs.FeedRef, arg4 []byte) error {
var arg4Copy []byte var arg4Copy []byte
if arg4 != nil { if arg4 != nil {
arg4Copy = make([]byte, len(arg4)) arg4Copy = make([]byte, len(arg4))
@ -237,26 +237,26 @@ func (fake *FakeAliasService) Register(arg1 context.Context, arg2 string, arg3 r
return fakeReturns.result1 return fakeReturns.result1
} }
func (fake *FakeAliasService) RegisterCallCount() int { func (fake *FakeAliasesService) RegisterCallCount() int {
fake.registerMutex.RLock() fake.registerMutex.RLock()
defer fake.registerMutex.RUnlock() defer fake.registerMutex.RUnlock()
return len(fake.registerArgsForCall) return len(fake.registerArgsForCall)
} }
func (fake *FakeAliasService) RegisterCalls(stub func(context.Context, string, refs.FeedRef, []byte) error) { func (fake *FakeAliasesService) RegisterCalls(stub func(context.Context, string, refs.FeedRef, []byte) error) {
fake.registerMutex.Lock() fake.registerMutex.Lock()
defer fake.registerMutex.Unlock() defer fake.registerMutex.Unlock()
fake.RegisterStub = stub fake.RegisterStub = stub
} }
func (fake *FakeAliasService) RegisterArgsForCall(i int) (context.Context, string, refs.FeedRef, []byte) { func (fake *FakeAliasesService) RegisterArgsForCall(i int) (context.Context, string, refs.FeedRef, []byte) {
fake.registerMutex.RLock() fake.registerMutex.RLock()
defer fake.registerMutex.RUnlock() defer fake.registerMutex.RUnlock()
argsForCall := fake.registerArgsForCall[i] argsForCall := fake.registerArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3, argsForCall.arg4 return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3, argsForCall.arg4
} }
func (fake *FakeAliasService) RegisterReturns(result1 error) { func (fake *FakeAliasesService) RegisterReturns(result1 error) {
fake.registerMutex.Lock() fake.registerMutex.Lock()
defer fake.registerMutex.Unlock() defer fake.registerMutex.Unlock()
fake.RegisterStub = nil fake.RegisterStub = nil
@ -265,7 +265,7 @@ func (fake *FakeAliasService) RegisterReturns(result1 error) {
}{result1} }{result1}
} }
func (fake *FakeAliasService) RegisterReturnsOnCall(i int, result1 error) { func (fake *FakeAliasesService) RegisterReturnsOnCall(i int, result1 error) {
fake.registerMutex.Lock() fake.registerMutex.Lock()
defer fake.registerMutex.Unlock() defer fake.registerMutex.Unlock()
fake.RegisterStub = nil fake.RegisterStub = nil
@ -279,7 +279,7 @@ func (fake *FakeAliasService) RegisterReturnsOnCall(i int, result1 error) {
}{result1} }{result1}
} }
func (fake *FakeAliasService) Resolve(arg1 context.Context, arg2 string) (roomdb.Alias, error) { func (fake *FakeAliasesService) Resolve(arg1 context.Context, arg2 string) (roomdb.Alias, error) {
fake.resolveMutex.Lock() fake.resolveMutex.Lock()
ret, specificReturn := fake.resolveReturnsOnCall[len(fake.resolveArgsForCall)] ret, specificReturn := fake.resolveReturnsOnCall[len(fake.resolveArgsForCall)]
fake.resolveArgsForCall = append(fake.resolveArgsForCall, struct { fake.resolveArgsForCall = append(fake.resolveArgsForCall, struct {
@ -299,26 +299,26 @@ func (fake *FakeAliasService) Resolve(arg1 context.Context, arg2 string) (roomdb
return fakeReturns.result1, fakeReturns.result2 return fakeReturns.result1, fakeReturns.result2
} }
func (fake *FakeAliasService) ResolveCallCount() int { func (fake *FakeAliasesService) ResolveCallCount() int {
fake.resolveMutex.RLock() fake.resolveMutex.RLock()
defer fake.resolveMutex.RUnlock() defer fake.resolveMutex.RUnlock()
return len(fake.resolveArgsForCall) return len(fake.resolveArgsForCall)
} }
func (fake *FakeAliasService) ResolveCalls(stub func(context.Context, string) (roomdb.Alias, error)) { func (fake *FakeAliasesService) ResolveCalls(stub func(context.Context, string) (roomdb.Alias, error)) {
fake.resolveMutex.Lock() fake.resolveMutex.Lock()
defer fake.resolveMutex.Unlock() defer fake.resolveMutex.Unlock()
fake.ResolveStub = stub fake.ResolveStub = stub
} }
func (fake *FakeAliasService) ResolveArgsForCall(i int) (context.Context, string) { func (fake *FakeAliasesService) ResolveArgsForCall(i int) (context.Context, string) {
fake.resolveMutex.RLock() fake.resolveMutex.RLock()
defer fake.resolveMutex.RUnlock() defer fake.resolveMutex.RUnlock()
argsForCall := fake.resolveArgsForCall[i] argsForCall := fake.resolveArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2 return argsForCall.arg1, argsForCall.arg2
} }
func (fake *FakeAliasService) ResolveReturns(result1 roomdb.Alias, result2 error) { func (fake *FakeAliasesService) ResolveReturns(result1 roomdb.Alias, result2 error) {
fake.resolveMutex.Lock() fake.resolveMutex.Lock()
defer fake.resolveMutex.Unlock() defer fake.resolveMutex.Unlock()
fake.ResolveStub = nil fake.ResolveStub = nil
@ -328,7 +328,7 @@ func (fake *FakeAliasService) ResolveReturns(result1 roomdb.Alias, result2 error
}{result1, result2} }{result1, result2}
} }
func (fake *FakeAliasService) ResolveReturnsOnCall(i int, result1 roomdb.Alias, result2 error) { func (fake *FakeAliasesService) ResolveReturnsOnCall(i int, result1 roomdb.Alias, result2 error) {
fake.resolveMutex.Lock() fake.resolveMutex.Lock()
defer fake.resolveMutex.Unlock() defer fake.resolveMutex.Unlock()
fake.ResolveStub = nil fake.ResolveStub = nil
@ -344,7 +344,7 @@ func (fake *FakeAliasService) ResolveReturnsOnCall(i int, result1 roomdb.Alias,
}{result1, result2} }{result1, result2}
} }
func (fake *FakeAliasService) Revoke(arg1 context.Context, arg2 string) error { func (fake *FakeAliasesService) Revoke(arg1 context.Context, arg2 string) error {
fake.revokeMutex.Lock() fake.revokeMutex.Lock()
ret, specificReturn := fake.revokeReturnsOnCall[len(fake.revokeArgsForCall)] ret, specificReturn := fake.revokeReturnsOnCall[len(fake.revokeArgsForCall)]
fake.revokeArgsForCall = append(fake.revokeArgsForCall, struct { fake.revokeArgsForCall = append(fake.revokeArgsForCall, struct {
@ -364,26 +364,26 @@ func (fake *FakeAliasService) Revoke(arg1 context.Context, arg2 string) error {
return fakeReturns.result1 return fakeReturns.result1
} }
func (fake *FakeAliasService) RevokeCallCount() int { func (fake *FakeAliasesService) RevokeCallCount() int {
fake.revokeMutex.RLock() fake.revokeMutex.RLock()
defer fake.revokeMutex.RUnlock() defer fake.revokeMutex.RUnlock()
return len(fake.revokeArgsForCall) return len(fake.revokeArgsForCall)
} }
func (fake *FakeAliasService) RevokeCalls(stub func(context.Context, string) error) { func (fake *FakeAliasesService) RevokeCalls(stub func(context.Context, string) error) {
fake.revokeMutex.Lock() fake.revokeMutex.Lock()
defer fake.revokeMutex.Unlock() defer fake.revokeMutex.Unlock()
fake.RevokeStub = stub fake.RevokeStub = stub
} }
func (fake *FakeAliasService) RevokeArgsForCall(i int) (context.Context, string) { func (fake *FakeAliasesService) RevokeArgsForCall(i int) (context.Context, string) {
fake.revokeMutex.RLock() fake.revokeMutex.RLock()
defer fake.revokeMutex.RUnlock() defer fake.revokeMutex.RUnlock()
argsForCall := fake.revokeArgsForCall[i] argsForCall := fake.revokeArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2 return argsForCall.arg1, argsForCall.arg2
} }
func (fake *FakeAliasService) RevokeReturns(result1 error) { func (fake *FakeAliasesService) RevokeReturns(result1 error) {
fake.revokeMutex.Lock() fake.revokeMutex.Lock()
defer fake.revokeMutex.Unlock() defer fake.revokeMutex.Unlock()
fake.RevokeStub = nil fake.RevokeStub = nil
@ -392,7 +392,7 @@ func (fake *FakeAliasService) RevokeReturns(result1 error) {
}{result1} }{result1}
} }
func (fake *FakeAliasService) RevokeReturnsOnCall(i int, result1 error) { func (fake *FakeAliasesService) RevokeReturnsOnCall(i int, result1 error) {
fake.revokeMutex.Lock() fake.revokeMutex.Lock()
defer fake.revokeMutex.Unlock() defer fake.revokeMutex.Unlock()
fake.RevokeStub = nil fake.RevokeStub = nil
@ -406,7 +406,7 @@ func (fake *FakeAliasService) RevokeReturnsOnCall(i int, result1 error) {
}{result1} }{result1}
} }
func (fake *FakeAliasService) Invocations() map[string][][]interface{} { func (fake *FakeAliasesService) Invocations() map[string][][]interface{} {
fake.invocationsMutex.RLock() fake.invocationsMutex.RLock()
defer fake.invocationsMutex.RUnlock() defer fake.invocationsMutex.RUnlock()
fake.getByIDMutex.RLock() fake.getByIDMutex.RLock()
@ -426,7 +426,7 @@ func (fake *FakeAliasService) Invocations() map[string][][]interface{} {
return copiedInvocations return copiedInvocations
} }
func (fake *FakeAliasService) recordInvocation(key string, args []interface{}) { func (fake *FakeAliasesService) recordInvocation(key string, args []interface{}) {
fake.invocationsMutex.Lock() fake.invocationsMutex.Lock()
defer fake.invocationsMutex.Unlock() defer fake.invocationsMutex.Unlock()
if fake.invocations == nil { if fake.invocations == nil {
@ -438,4 +438,4 @@ func (fake *FakeAliasService) recordInvocation(key string, args []interface{}) {
fake.invocations[key] = append(fake.invocations[key], args) fake.invocations[key] = append(fake.invocations[key], args)
} }
var _ roomdb.AliasService = new(FakeAliasService) var _ roomdb.AliasesService = new(FakeAliasesService)

View File

@ -23,34 +23,19 @@ type FakeAuthFallbackService struct {
result1 interface{} result1 interface{}
result2 error result2 error
} }
CreateStub func(context.Context, string, []byte) (int64, error) CreateStub func(context.Context, int64, string, []byte) error
createMutex sync.RWMutex createMutex sync.RWMutex
createArgsForCall []struct { createArgsForCall []struct {
arg1 context.Context arg1 context.Context
arg2 string arg2 int64
arg3 []byte arg3 string
arg4 []byte
} }
createReturns struct { createReturns struct {
result1 int64 result1 error
result2 error
} }
createReturnsOnCall map[int]struct { createReturnsOnCall map[int]struct {
result1 int64 result1 error
result2 error
}
GetByIDStub func(context.Context, int64) (*roomdb.User, error)
getByIDMutex sync.RWMutex
getByIDArgsForCall []struct {
arg1 context.Context
arg2 int64
}
getByIDReturns struct {
result1 *roomdb.User
result2 error
}
getByIDReturnsOnCall map[int]struct {
result1 *roomdb.User
result2 error
} }
invocations map[string][][]interface{} invocations map[string][][]interface{}
invocationsMutex sync.RWMutex invocationsMutex sync.RWMutex
@ -121,30 +106,31 @@ func (fake *FakeAuthFallbackService) CheckReturnsOnCall(i int, result1 interface
}{result1, result2} }{result1, result2}
} }
func (fake *FakeAuthFallbackService) Create(arg1 context.Context, arg2 string, arg3 []byte) (int64, error) { func (fake *FakeAuthFallbackService) Create(arg1 context.Context, arg2 int64, arg3 string, arg4 []byte) error {
var arg3Copy []byte var arg4Copy []byte
if arg3 != nil { if arg4 != nil {
arg3Copy = make([]byte, len(arg3)) arg4Copy = make([]byte, len(arg4))
copy(arg3Copy, arg3) copy(arg4Copy, arg4)
} }
fake.createMutex.Lock() fake.createMutex.Lock()
ret, specificReturn := fake.createReturnsOnCall[len(fake.createArgsForCall)] ret, specificReturn := fake.createReturnsOnCall[len(fake.createArgsForCall)]
fake.createArgsForCall = append(fake.createArgsForCall, struct { fake.createArgsForCall = append(fake.createArgsForCall, struct {
arg1 context.Context arg1 context.Context
arg2 string arg2 int64
arg3 []byte arg3 string
}{arg1, arg2, arg3Copy}) arg4 []byte
}{arg1, arg2, arg3, arg4Copy})
stub := fake.CreateStub stub := fake.CreateStub
fakeReturns := fake.createReturns fakeReturns := fake.createReturns
fake.recordInvocation("Create", []interface{}{arg1, arg2, arg3Copy}) fake.recordInvocation("Create", []interface{}{arg1, arg2, arg3, arg4Copy})
fake.createMutex.Unlock() fake.createMutex.Unlock()
if stub != nil { if stub != nil {
return stub(arg1, arg2, arg3) return stub(arg1, arg2, arg3, arg4)
} }
if specificReturn { if specificReturn {
return ret.result1, ret.result2 return ret.result1
} }
return fakeReturns.result1, fakeReturns.result2 return fakeReturns.result1
} }
func (fake *FakeAuthFallbackService) CreateCallCount() int { func (fake *FakeAuthFallbackService) CreateCallCount() int {
@ -153,108 +139,40 @@ func (fake *FakeAuthFallbackService) CreateCallCount() int {
return len(fake.createArgsForCall) return len(fake.createArgsForCall)
} }
func (fake *FakeAuthFallbackService) CreateCalls(stub func(context.Context, string, []byte) (int64, error)) { func (fake *FakeAuthFallbackService) CreateCalls(stub func(context.Context, int64, string, []byte) error) {
fake.createMutex.Lock() fake.createMutex.Lock()
defer fake.createMutex.Unlock() defer fake.createMutex.Unlock()
fake.CreateStub = stub fake.CreateStub = stub
} }
func (fake *FakeAuthFallbackService) CreateArgsForCall(i int) (context.Context, string, []byte) { func (fake *FakeAuthFallbackService) CreateArgsForCall(i int) (context.Context, int64, string, []byte) {
fake.createMutex.RLock() fake.createMutex.RLock()
defer fake.createMutex.RUnlock() defer fake.createMutex.RUnlock()
argsForCall := fake.createArgsForCall[i] argsForCall := fake.createArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3 return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3, argsForCall.arg4
} }
func (fake *FakeAuthFallbackService) CreateReturns(result1 int64, result2 error) { func (fake *FakeAuthFallbackService) CreateReturns(result1 error) {
fake.createMutex.Lock() fake.createMutex.Lock()
defer fake.createMutex.Unlock() defer fake.createMutex.Unlock()
fake.CreateStub = nil fake.CreateStub = nil
fake.createReturns = struct { fake.createReturns = struct {
result1 int64 result1 error
result2 error }{result1}
}{result1, result2}
} }
func (fake *FakeAuthFallbackService) CreateReturnsOnCall(i int, result1 int64, result2 error) { func (fake *FakeAuthFallbackService) CreateReturnsOnCall(i int, result1 error) {
fake.createMutex.Lock() fake.createMutex.Lock()
defer fake.createMutex.Unlock() defer fake.createMutex.Unlock()
fake.CreateStub = nil fake.CreateStub = nil
if fake.createReturnsOnCall == nil { if fake.createReturnsOnCall == nil {
fake.createReturnsOnCall = make(map[int]struct { fake.createReturnsOnCall = make(map[int]struct {
result1 int64 result1 error
result2 error
}) })
} }
fake.createReturnsOnCall[i] = struct { fake.createReturnsOnCall[i] = struct {
result1 int64 result1 error
result2 error }{result1}
}{result1, result2}
}
func (fake *FakeAuthFallbackService) GetByID(arg1 context.Context, arg2 int64) (*roomdb.User, error) {
fake.getByIDMutex.Lock()
ret, specificReturn := fake.getByIDReturnsOnCall[len(fake.getByIDArgsForCall)]
fake.getByIDArgsForCall = append(fake.getByIDArgsForCall, struct {
arg1 context.Context
arg2 int64
}{arg1, arg2})
stub := fake.GetByIDStub
fakeReturns := fake.getByIDReturns
fake.recordInvocation("GetByID", []interface{}{arg1, arg2})
fake.getByIDMutex.Unlock()
if stub != nil {
return stub(arg1, arg2)
}
if specificReturn {
return ret.result1, ret.result2
}
return fakeReturns.result1, fakeReturns.result2
}
func (fake *FakeAuthFallbackService) GetByIDCallCount() int {
fake.getByIDMutex.RLock()
defer fake.getByIDMutex.RUnlock()
return len(fake.getByIDArgsForCall)
}
func (fake *FakeAuthFallbackService) GetByIDCalls(stub func(context.Context, int64) (*roomdb.User, error)) {
fake.getByIDMutex.Lock()
defer fake.getByIDMutex.Unlock()
fake.GetByIDStub = stub
}
func (fake *FakeAuthFallbackService) GetByIDArgsForCall(i int) (context.Context, int64) {
fake.getByIDMutex.RLock()
defer fake.getByIDMutex.RUnlock()
argsForCall := fake.getByIDArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2
}
func (fake *FakeAuthFallbackService) GetByIDReturns(result1 *roomdb.User, result2 error) {
fake.getByIDMutex.Lock()
defer fake.getByIDMutex.Unlock()
fake.GetByIDStub = nil
fake.getByIDReturns = struct {
result1 *roomdb.User
result2 error
}{result1, result2}
}
func (fake *FakeAuthFallbackService) GetByIDReturnsOnCall(i int, result1 *roomdb.User, result2 error) {
fake.getByIDMutex.Lock()
defer fake.getByIDMutex.Unlock()
fake.GetByIDStub = nil
if fake.getByIDReturnsOnCall == nil {
fake.getByIDReturnsOnCall = make(map[int]struct {
result1 *roomdb.User
result2 error
})
}
fake.getByIDReturnsOnCall[i] = struct {
result1 *roomdb.User
result2 error
}{result1, result2}
} }
func (fake *FakeAuthFallbackService) Invocations() map[string][][]interface{} { func (fake *FakeAuthFallbackService) Invocations() map[string][][]interface{} {
@ -264,8 +182,6 @@ func (fake *FakeAuthFallbackService) Invocations() map[string][][]interface{} {
defer fake.checkMutex.RUnlock() defer fake.checkMutex.RUnlock()
fake.createMutex.RLock() fake.createMutex.RLock()
defer fake.createMutex.RUnlock() defer fake.createMutex.RUnlock()
fake.getByIDMutex.RLock()
defer fake.getByIDMutex.RUnlock()
copiedInvocations := map[string][][]interface{}{} copiedInvocations := map[string][][]interface{}{}
for key, value := range fake.invocations { for key, value := range fake.invocations {
copiedInvocations[key] = value copiedInvocations[key] = value

View File

@ -9,7 +9,7 @@ import (
refs "go.mindeco.de/ssb-refs" refs "go.mindeco.de/ssb-refs"
) )
type FakeAllowListService struct { type FakeDeniedListService struct {
AddStub func(context.Context, refs.FeedRef) error AddStub func(context.Context, refs.FeedRef) error
addMutex sync.RWMutex addMutex sync.RWMutex
addArgsForCall []struct { addArgsForCall []struct {
@ -60,17 +60,17 @@ type FakeAllowListService struct {
hasIDReturnsOnCall map[int]struct { hasIDReturnsOnCall map[int]struct {
result1 bool result1 bool
} }
ListStub func(context.Context) (roomdb.ListEntries, error) ListStub func(context.Context) ([]roomdb.ListEntry, error)
listMutex sync.RWMutex listMutex sync.RWMutex
listArgsForCall []struct { listArgsForCall []struct {
arg1 context.Context arg1 context.Context
} }
listReturns struct { listReturns struct {
result1 roomdb.ListEntries result1 []roomdb.ListEntry
result2 error result2 error
} }
listReturnsOnCall map[int]struct { listReturnsOnCall map[int]struct {
result1 roomdb.ListEntries result1 []roomdb.ListEntry
result2 error result2 error
} }
RemoveFeedStub func(context.Context, refs.FeedRef) error RemoveFeedStub func(context.Context, refs.FeedRef) error
@ -101,7 +101,7 @@ type FakeAllowListService struct {
invocationsMutex sync.RWMutex invocationsMutex sync.RWMutex
} }
func (fake *FakeAllowListService) Add(arg1 context.Context, arg2 refs.FeedRef) error { func (fake *FakeDeniedListService) Add(arg1 context.Context, arg2 refs.FeedRef) error {
fake.addMutex.Lock() fake.addMutex.Lock()
ret, specificReturn := fake.addReturnsOnCall[len(fake.addArgsForCall)] ret, specificReturn := fake.addReturnsOnCall[len(fake.addArgsForCall)]
fake.addArgsForCall = append(fake.addArgsForCall, struct { fake.addArgsForCall = append(fake.addArgsForCall, struct {
@ -121,26 +121,26 @@ func (fake *FakeAllowListService) Add(arg1 context.Context, arg2 refs.FeedRef) e
return fakeReturns.result1 return fakeReturns.result1
} }
func (fake *FakeAllowListService) AddCallCount() int { func (fake *FakeDeniedListService) AddCallCount() int {
fake.addMutex.RLock() fake.addMutex.RLock()
defer fake.addMutex.RUnlock() defer fake.addMutex.RUnlock()
return len(fake.addArgsForCall) return len(fake.addArgsForCall)
} }
func (fake *FakeAllowListService) AddCalls(stub func(context.Context, refs.FeedRef) error) { func (fake *FakeDeniedListService) AddCalls(stub func(context.Context, refs.FeedRef) error) {
fake.addMutex.Lock() fake.addMutex.Lock()
defer fake.addMutex.Unlock() defer fake.addMutex.Unlock()
fake.AddStub = stub fake.AddStub = stub
} }
func (fake *FakeAllowListService) AddArgsForCall(i int) (context.Context, refs.FeedRef) { func (fake *FakeDeniedListService) AddArgsForCall(i int) (context.Context, refs.FeedRef) {
fake.addMutex.RLock() fake.addMutex.RLock()
defer fake.addMutex.RUnlock() defer fake.addMutex.RUnlock()
argsForCall := fake.addArgsForCall[i] argsForCall := fake.addArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2 return argsForCall.arg1, argsForCall.arg2
} }
func (fake *FakeAllowListService) AddReturns(result1 error) { func (fake *FakeDeniedListService) AddReturns(result1 error) {
fake.addMutex.Lock() fake.addMutex.Lock()
defer fake.addMutex.Unlock() defer fake.addMutex.Unlock()
fake.AddStub = nil fake.AddStub = nil
@ -149,7 +149,7 @@ func (fake *FakeAllowListService) AddReturns(result1 error) {
}{result1} }{result1}
} }
func (fake *FakeAllowListService) AddReturnsOnCall(i int, result1 error) { func (fake *FakeDeniedListService) AddReturnsOnCall(i int, result1 error) {
fake.addMutex.Lock() fake.addMutex.Lock()
defer fake.addMutex.Unlock() defer fake.addMutex.Unlock()
fake.AddStub = nil fake.AddStub = nil
@ -163,7 +163,7 @@ func (fake *FakeAllowListService) AddReturnsOnCall(i int, result1 error) {
}{result1} }{result1}
} }
func (fake *FakeAllowListService) GetByID(arg1 context.Context, arg2 int64) (roomdb.ListEntry, error) { func (fake *FakeDeniedListService) GetByID(arg1 context.Context, arg2 int64) (roomdb.ListEntry, error) {
fake.getByIDMutex.Lock() fake.getByIDMutex.Lock()
ret, specificReturn := fake.getByIDReturnsOnCall[len(fake.getByIDArgsForCall)] ret, specificReturn := fake.getByIDReturnsOnCall[len(fake.getByIDArgsForCall)]
fake.getByIDArgsForCall = append(fake.getByIDArgsForCall, struct { fake.getByIDArgsForCall = append(fake.getByIDArgsForCall, struct {
@ -183,26 +183,26 @@ func (fake *FakeAllowListService) GetByID(arg1 context.Context, arg2 int64) (roo
return fakeReturns.result1, fakeReturns.result2 return fakeReturns.result1, fakeReturns.result2
} }
func (fake *FakeAllowListService) GetByIDCallCount() int { func (fake *FakeDeniedListService) GetByIDCallCount() int {
fake.getByIDMutex.RLock() fake.getByIDMutex.RLock()
defer fake.getByIDMutex.RUnlock() defer fake.getByIDMutex.RUnlock()
return len(fake.getByIDArgsForCall) return len(fake.getByIDArgsForCall)
} }
func (fake *FakeAllowListService) GetByIDCalls(stub func(context.Context, int64) (roomdb.ListEntry, error)) { func (fake *FakeDeniedListService) GetByIDCalls(stub func(context.Context, int64) (roomdb.ListEntry, error)) {
fake.getByIDMutex.Lock() fake.getByIDMutex.Lock()
defer fake.getByIDMutex.Unlock() defer fake.getByIDMutex.Unlock()
fake.GetByIDStub = stub fake.GetByIDStub = stub
} }
func (fake *FakeAllowListService) GetByIDArgsForCall(i int) (context.Context, int64) { func (fake *FakeDeniedListService) GetByIDArgsForCall(i int) (context.Context, int64) {
fake.getByIDMutex.RLock() fake.getByIDMutex.RLock()
defer fake.getByIDMutex.RUnlock() defer fake.getByIDMutex.RUnlock()
argsForCall := fake.getByIDArgsForCall[i] argsForCall := fake.getByIDArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2 return argsForCall.arg1, argsForCall.arg2
} }
func (fake *FakeAllowListService) GetByIDReturns(result1 roomdb.ListEntry, result2 error) { func (fake *FakeDeniedListService) GetByIDReturns(result1 roomdb.ListEntry, result2 error) {
fake.getByIDMutex.Lock() fake.getByIDMutex.Lock()
defer fake.getByIDMutex.Unlock() defer fake.getByIDMutex.Unlock()
fake.GetByIDStub = nil fake.GetByIDStub = nil
@ -212,7 +212,7 @@ func (fake *FakeAllowListService) GetByIDReturns(result1 roomdb.ListEntry, resul
}{result1, result2} }{result1, result2}
} }
func (fake *FakeAllowListService) GetByIDReturnsOnCall(i int, result1 roomdb.ListEntry, result2 error) { func (fake *FakeDeniedListService) GetByIDReturnsOnCall(i int, result1 roomdb.ListEntry, result2 error) {
fake.getByIDMutex.Lock() fake.getByIDMutex.Lock()
defer fake.getByIDMutex.Unlock() defer fake.getByIDMutex.Unlock()
fake.GetByIDStub = nil fake.GetByIDStub = nil
@ -228,7 +228,7 @@ func (fake *FakeAllowListService) GetByIDReturnsOnCall(i int, result1 roomdb.Lis
}{result1, result2} }{result1, result2}
} }
func (fake *FakeAllowListService) HasFeed(arg1 context.Context, arg2 refs.FeedRef) bool { func (fake *FakeDeniedListService) HasFeed(arg1 context.Context, arg2 refs.FeedRef) bool {
fake.hasFeedMutex.Lock() fake.hasFeedMutex.Lock()
ret, specificReturn := fake.hasFeedReturnsOnCall[len(fake.hasFeedArgsForCall)] ret, specificReturn := fake.hasFeedReturnsOnCall[len(fake.hasFeedArgsForCall)]
fake.hasFeedArgsForCall = append(fake.hasFeedArgsForCall, struct { fake.hasFeedArgsForCall = append(fake.hasFeedArgsForCall, struct {
@ -248,26 +248,26 @@ func (fake *FakeAllowListService) HasFeed(arg1 context.Context, arg2 refs.FeedRe
return fakeReturns.result1 return fakeReturns.result1
} }
func (fake *FakeAllowListService) HasFeedCallCount() int { func (fake *FakeDeniedListService) HasFeedCallCount() int {
fake.hasFeedMutex.RLock() fake.hasFeedMutex.RLock()
defer fake.hasFeedMutex.RUnlock() defer fake.hasFeedMutex.RUnlock()
return len(fake.hasFeedArgsForCall) return len(fake.hasFeedArgsForCall)
} }
func (fake *FakeAllowListService) HasFeedCalls(stub func(context.Context, refs.FeedRef) bool) { func (fake *FakeDeniedListService) HasFeedCalls(stub func(context.Context, refs.FeedRef) bool) {
fake.hasFeedMutex.Lock() fake.hasFeedMutex.Lock()
defer fake.hasFeedMutex.Unlock() defer fake.hasFeedMutex.Unlock()
fake.HasFeedStub = stub fake.HasFeedStub = stub
} }
func (fake *FakeAllowListService) HasFeedArgsForCall(i int) (context.Context, refs.FeedRef) { func (fake *FakeDeniedListService) HasFeedArgsForCall(i int) (context.Context, refs.FeedRef) {
fake.hasFeedMutex.RLock() fake.hasFeedMutex.RLock()
defer fake.hasFeedMutex.RUnlock() defer fake.hasFeedMutex.RUnlock()
argsForCall := fake.hasFeedArgsForCall[i] argsForCall := fake.hasFeedArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2 return argsForCall.arg1, argsForCall.arg2
} }
func (fake *FakeAllowListService) HasFeedReturns(result1 bool) { func (fake *FakeDeniedListService) HasFeedReturns(result1 bool) {
fake.hasFeedMutex.Lock() fake.hasFeedMutex.Lock()
defer fake.hasFeedMutex.Unlock() defer fake.hasFeedMutex.Unlock()
fake.HasFeedStub = nil fake.HasFeedStub = nil
@ -276,7 +276,7 @@ func (fake *FakeAllowListService) HasFeedReturns(result1 bool) {
}{result1} }{result1}
} }
func (fake *FakeAllowListService) HasFeedReturnsOnCall(i int, result1 bool) { func (fake *FakeDeniedListService) HasFeedReturnsOnCall(i int, result1 bool) {
fake.hasFeedMutex.Lock() fake.hasFeedMutex.Lock()
defer fake.hasFeedMutex.Unlock() defer fake.hasFeedMutex.Unlock()
fake.HasFeedStub = nil fake.HasFeedStub = nil
@ -290,7 +290,7 @@ func (fake *FakeAllowListService) HasFeedReturnsOnCall(i int, result1 bool) {
}{result1} }{result1}
} }
func (fake *FakeAllowListService) HasID(arg1 context.Context, arg2 int64) bool { func (fake *FakeDeniedListService) HasID(arg1 context.Context, arg2 int64) bool {
fake.hasIDMutex.Lock() fake.hasIDMutex.Lock()
ret, specificReturn := fake.hasIDReturnsOnCall[len(fake.hasIDArgsForCall)] ret, specificReturn := fake.hasIDReturnsOnCall[len(fake.hasIDArgsForCall)]
fake.hasIDArgsForCall = append(fake.hasIDArgsForCall, struct { fake.hasIDArgsForCall = append(fake.hasIDArgsForCall, struct {
@ -310,26 +310,26 @@ func (fake *FakeAllowListService) HasID(arg1 context.Context, arg2 int64) bool {
return fakeReturns.result1 return fakeReturns.result1
} }
func (fake *FakeAllowListService) HasIDCallCount() int { func (fake *FakeDeniedListService) HasIDCallCount() int {
fake.hasIDMutex.RLock() fake.hasIDMutex.RLock()
defer fake.hasIDMutex.RUnlock() defer fake.hasIDMutex.RUnlock()
return len(fake.hasIDArgsForCall) return len(fake.hasIDArgsForCall)
} }
func (fake *FakeAllowListService) HasIDCalls(stub func(context.Context, int64) bool) { func (fake *FakeDeniedListService) HasIDCalls(stub func(context.Context, int64) bool) {
fake.hasIDMutex.Lock() fake.hasIDMutex.Lock()
defer fake.hasIDMutex.Unlock() defer fake.hasIDMutex.Unlock()
fake.HasIDStub = stub fake.HasIDStub = stub
} }
func (fake *FakeAllowListService) HasIDArgsForCall(i int) (context.Context, int64) { func (fake *FakeDeniedListService) HasIDArgsForCall(i int) (context.Context, int64) {
fake.hasIDMutex.RLock() fake.hasIDMutex.RLock()
defer fake.hasIDMutex.RUnlock() defer fake.hasIDMutex.RUnlock()
argsForCall := fake.hasIDArgsForCall[i] argsForCall := fake.hasIDArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2 return argsForCall.arg1, argsForCall.arg2
} }
func (fake *FakeAllowListService) HasIDReturns(result1 bool) { func (fake *FakeDeniedListService) HasIDReturns(result1 bool) {
fake.hasIDMutex.Lock() fake.hasIDMutex.Lock()
defer fake.hasIDMutex.Unlock() defer fake.hasIDMutex.Unlock()
fake.HasIDStub = nil fake.HasIDStub = nil
@ -338,7 +338,7 @@ func (fake *FakeAllowListService) HasIDReturns(result1 bool) {
}{result1} }{result1}
} }
func (fake *FakeAllowListService) HasIDReturnsOnCall(i int, result1 bool) { func (fake *FakeDeniedListService) HasIDReturnsOnCall(i int, result1 bool) {
fake.hasIDMutex.Lock() fake.hasIDMutex.Lock()
defer fake.hasIDMutex.Unlock() defer fake.hasIDMutex.Unlock()
fake.HasIDStub = nil fake.HasIDStub = nil
@ -352,7 +352,7 @@ func (fake *FakeAllowListService) HasIDReturnsOnCall(i int, result1 bool) {
}{result1} }{result1}
} }
func (fake *FakeAllowListService) List(arg1 context.Context) (roomdb.ListEntries, error) { func (fake *FakeDeniedListService) List(arg1 context.Context) ([]roomdb.ListEntry, error) {
fake.listMutex.Lock() fake.listMutex.Lock()
ret, specificReturn := fake.listReturnsOnCall[len(fake.listArgsForCall)] ret, specificReturn := fake.listReturnsOnCall[len(fake.listArgsForCall)]
fake.listArgsForCall = append(fake.listArgsForCall, struct { fake.listArgsForCall = append(fake.listArgsForCall, struct {
@ -371,52 +371,52 @@ func (fake *FakeAllowListService) List(arg1 context.Context) (roomdb.ListEntries
return fakeReturns.result1, fakeReturns.result2 return fakeReturns.result1, fakeReturns.result2
} }
func (fake *FakeAllowListService) ListCallCount() int { func (fake *FakeDeniedListService) ListCallCount() int {
fake.listMutex.RLock() fake.listMutex.RLock()
defer fake.listMutex.RUnlock() defer fake.listMutex.RUnlock()
return len(fake.listArgsForCall) return len(fake.listArgsForCall)
} }
func (fake *FakeAllowListService) ListCalls(stub func(context.Context) (roomdb.ListEntries, error)) { func (fake *FakeDeniedListService) ListCalls(stub func(context.Context) ([]roomdb.ListEntry, error)) {
fake.listMutex.Lock() fake.listMutex.Lock()
defer fake.listMutex.Unlock() defer fake.listMutex.Unlock()
fake.ListStub = stub fake.ListStub = stub
} }
func (fake *FakeAllowListService) ListArgsForCall(i int) context.Context { func (fake *FakeDeniedListService) ListArgsForCall(i int) context.Context {
fake.listMutex.RLock() fake.listMutex.RLock()
defer fake.listMutex.RUnlock() defer fake.listMutex.RUnlock()
argsForCall := fake.listArgsForCall[i] argsForCall := fake.listArgsForCall[i]
return argsForCall.arg1 return argsForCall.arg1
} }
func (fake *FakeAllowListService) ListReturns(result1 roomdb.ListEntries, result2 error) { func (fake *FakeDeniedListService) ListReturns(result1 []roomdb.ListEntry, result2 error) {
fake.listMutex.Lock() fake.listMutex.Lock()
defer fake.listMutex.Unlock() defer fake.listMutex.Unlock()
fake.ListStub = nil fake.ListStub = nil
fake.listReturns = struct { fake.listReturns = struct {
result1 roomdb.ListEntries result1 []roomdb.ListEntry
result2 error result2 error
}{result1, result2} }{result1, result2}
} }
func (fake *FakeAllowListService) ListReturnsOnCall(i int, result1 roomdb.ListEntries, result2 error) { func (fake *FakeDeniedListService) ListReturnsOnCall(i int, result1 []roomdb.ListEntry, result2 error) {
fake.listMutex.Lock() fake.listMutex.Lock()
defer fake.listMutex.Unlock() defer fake.listMutex.Unlock()
fake.ListStub = nil fake.ListStub = nil
if fake.listReturnsOnCall == nil { if fake.listReturnsOnCall == nil {
fake.listReturnsOnCall = make(map[int]struct { fake.listReturnsOnCall = make(map[int]struct {
result1 roomdb.ListEntries result1 []roomdb.ListEntry
result2 error result2 error
}) })
} }
fake.listReturnsOnCall[i] = struct { fake.listReturnsOnCall[i] = struct {
result1 roomdb.ListEntries result1 []roomdb.ListEntry
result2 error result2 error
}{result1, result2} }{result1, result2}
} }
func (fake *FakeAllowListService) RemoveFeed(arg1 context.Context, arg2 refs.FeedRef) error { func (fake *FakeDeniedListService) RemoveFeed(arg1 context.Context, arg2 refs.FeedRef) error {
fake.removeFeedMutex.Lock() fake.removeFeedMutex.Lock()
ret, specificReturn := fake.removeFeedReturnsOnCall[len(fake.removeFeedArgsForCall)] ret, specificReturn := fake.removeFeedReturnsOnCall[len(fake.removeFeedArgsForCall)]
fake.removeFeedArgsForCall = append(fake.removeFeedArgsForCall, struct { fake.removeFeedArgsForCall = append(fake.removeFeedArgsForCall, struct {
@ -436,26 +436,26 @@ func (fake *FakeAllowListService) RemoveFeed(arg1 context.Context, arg2 refs.Fee
return fakeReturns.result1 return fakeReturns.result1
} }
func (fake *FakeAllowListService) RemoveFeedCallCount() int { func (fake *FakeDeniedListService) RemoveFeedCallCount() int {
fake.removeFeedMutex.RLock() fake.removeFeedMutex.RLock()
defer fake.removeFeedMutex.RUnlock() defer fake.removeFeedMutex.RUnlock()
return len(fake.removeFeedArgsForCall) return len(fake.removeFeedArgsForCall)
} }
func (fake *FakeAllowListService) RemoveFeedCalls(stub func(context.Context, refs.FeedRef) error) { func (fake *FakeDeniedListService) RemoveFeedCalls(stub func(context.Context, refs.FeedRef) error) {
fake.removeFeedMutex.Lock() fake.removeFeedMutex.Lock()
defer fake.removeFeedMutex.Unlock() defer fake.removeFeedMutex.Unlock()
fake.RemoveFeedStub = stub fake.RemoveFeedStub = stub
} }
func (fake *FakeAllowListService) RemoveFeedArgsForCall(i int) (context.Context, refs.FeedRef) { func (fake *FakeDeniedListService) RemoveFeedArgsForCall(i int) (context.Context, refs.FeedRef) {
fake.removeFeedMutex.RLock() fake.removeFeedMutex.RLock()
defer fake.removeFeedMutex.RUnlock() defer fake.removeFeedMutex.RUnlock()
argsForCall := fake.removeFeedArgsForCall[i] argsForCall := fake.removeFeedArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2 return argsForCall.arg1, argsForCall.arg2
} }
func (fake *FakeAllowListService) RemoveFeedReturns(result1 error) { func (fake *FakeDeniedListService) RemoveFeedReturns(result1 error) {
fake.removeFeedMutex.Lock() fake.removeFeedMutex.Lock()
defer fake.removeFeedMutex.Unlock() defer fake.removeFeedMutex.Unlock()
fake.RemoveFeedStub = nil fake.RemoveFeedStub = nil
@ -464,7 +464,7 @@ func (fake *FakeAllowListService) RemoveFeedReturns(result1 error) {
}{result1} }{result1}
} }
func (fake *FakeAllowListService) RemoveFeedReturnsOnCall(i int, result1 error) { func (fake *FakeDeniedListService) RemoveFeedReturnsOnCall(i int, result1 error) {
fake.removeFeedMutex.Lock() fake.removeFeedMutex.Lock()
defer fake.removeFeedMutex.Unlock() defer fake.removeFeedMutex.Unlock()
fake.RemoveFeedStub = nil fake.RemoveFeedStub = nil
@ -478,7 +478,7 @@ func (fake *FakeAllowListService) RemoveFeedReturnsOnCall(i int, result1 error)
}{result1} }{result1}
} }
func (fake *FakeAllowListService) RemoveID(arg1 context.Context, arg2 int64) error { func (fake *FakeDeniedListService) RemoveID(arg1 context.Context, arg2 int64) error {
fake.removeIDMutex.Lock() fake.removeIDMutex.Lock()
ret, specificReturn := fake.removeIDReturnsOnCall[len(fake.removeIDArgsForCall)] ret, specificReturn := fake.removeIDReturnsOnCall[len(fake.removeIDArgsForCall)]
fake.removeIDArgsForCall = append(fake.removeIDArgsForCall, struct { fake.removeIDArgsForCall = append(fake.removeIDArgsForCall, struct {
@ -498,26 +498,26 @@ func (fake *FakeAllowListService) RemoveID(arg1 context.Context, arg2 int64) err
return fakeReturns.result1 return fakeReturns.result1
} }
func (fake *FakeAllowListService) RemoveIDCallCount() int { func (fake *FakeDeniedListService) RemoveIDCallCount() int {
fake.removeIDMutex.RLock() fake.removeIDMutex.RLock()
defer fake.removeIDMutex.RUnlock() defer fake.removeIDMutex.RUnlock()
return len(fake.removeIDArgsForCall) return len(fake.removeIDArgsForCall)
} }
func (fake *FakeAllowListService) RemoveIDCalls(stub func(context.Context, int64) error) { func (fake *FakeDeniedListService) RemoveIDCalls(stub func(context.Context, int64) error) {
fake.removeIDMutex.Lock() fake.removeIDMutex.Lock()
defer fake.removeIDMutex.Unlock() defer fake.removeIDMutex.Unlock()
fake.RemoveIDStub = stub fake.RemoveIDStub = stub
} }
func (fake *FakeAllowListService) RemoveIDArgsForCall(i int) (context.Context, int64) { func (fake *FakeDeniedListService) RemoveIDArgsForCall(i int) (context.Context, int64) {
fake.removeIDMutex.RLock() fake.removeIDMutex.RLock()
defer fake.removeIDMutex.RUnlock() defer fake.removeIDMutex.RUnlock()
argsForCall := fake.removeIDArgsForCall[i] argsForCall := fake.removeIDArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2 return argsForCall.arg1, argsForCall.arg2
} }
func (fake *FakeAllowListService) RemoveIDReturns(result1 error) { func (fake *FakeDeniedListService) RemoveIDReturns(result1 error) {
fake.removeIDMutex.Lock() fake.removeIDMutex.Lock()
defer fake.removeIDMutex.Unlock() defer fake.removeIDMutex.Unlock()
fake.RemoveIDStub = nil fake.RemoveIDStub = nil
@ -526,7 +526,7 @@ func (fake *FakeAllowListService) RemoveIDReturns(result1 error) {
}{result1} }{result1}
} }
func (fake *FakeAllowListService) RemoveIDReturnsOnCall(i int, result1 error) { func (fake *FakeDeniedListService) RemoveIDReturnsOnCall(i int, result1 error) {
fake.removeIDMutex.Lock() fake.removeIDMutex.Lock()
defer fake.removeIDMutex.Unlock() defer fake.removeIDMutex.Unlock()
fake.RemoveIDStub = nil fake.RemoveIDStub = nil
@ -540,7 +540,7 @@ func (fake *FakeAllowListService) RemoveIDReturnsOnCall(i int, result1 error) {
}{result1} }{result1}
} }
func (fake *FakeAllowListService) Invocations() map[string][][]interface{} { func (fake *FakeDeniedListService) Invocations() map[string][][]interface{} {
fake.invocationsMutex.RLock() fake.invocationsMutex.RLock()
defer fake.invocationsMutex.RUnlock() defer fake.invocationsMutex.RUnlock()
fake.addMutex.RLock() fake.addMutex.RLock()
@ -564,7 +564,7 @@ func (fake *FakeAllowListService) Invocations() map[string][][]interface{} {
return copiedInvocations return copiedInvocations
} }
func (fake *FakeAllowListService) recordInvocation(key string, args []interface{}) { func (fake *FakeDeniedListService) recordInvocation(key string, args []interface{}) {
fake.invocationsMutex.Lock() fake.invocationsMutex.Lock()
defer fake.invocationsMutex.Unlock() defer fake.invocationsMutex.Unlock()
if fake.invocations == nil { if fake.invocations == nil {
@ -576,4 +576,4 @@ func (fake *FakeAllowListService) recordInvocation(key string, args []interface{
fake.invocations[key] = append(fake.invocations[key], args) fake.invocations[key] = append(fake.invocations[key], args)
} }
var _ roomdb.AllowListService = new(FakeAllowListService) var _ roomdb.DeniedListService = new(FakeDeniedListService)

View File

@ -9,7 +9,7 @@ import (
refs "go.mindeco.de/ssb-refs" refs "go.mindeco.de/ssb-refs"
) )
type FakeInviteService struct { type FakeInvitesService struct {
ConsumeStub func(context.Context, string, refs.FeedRef) (roomdb.Invite, error) ConsumeStub func(context.Context, string, refs.FeedRef) (roomdb.Invite, error)
consumeMutex sync.RWMutex consumeMutex sync.RWMutex
consumeArgsForCall []struct { consumeArgsForCall []struct {
@ -97,7 +97,7 @@ type FakeInviteService struct {
invocationsMutex sync.RWMutex invocationsMutex sync.RWMutex
} }
func (fake *FakeInviteService) Consume(arg1 context.Context, arg2 string, arg3 refs.FeedRef) (roomdb.Invite, error) { func (fake *FakeInvitesService) Consume(arg1 context.Context, arg2 string, arg3 refs.FeedRef) (roomdb.Invite, error) {
fake.consumeMutex.Lock() fake.consumeMutex.Lock()
ret, specificReturn := fake.consumeReturnsOnCall[len(fake.consumeArgsForCall)] ret, specificReturn := fake.consumeReturnsOnCall[len(fake.consumeArgsForCall)]
fake.consumeArgsForCall = append(fake.consumeArgsForCall, struct { fake.consumeArgsForCall = append(fake.consumeArgsForCall, struct {
@ -118,26 +118,26 @@ func (fake *FakeInviteService) Consume(arg1 context.Context, arg2 string, arg3 r
return fakeReturns.result1, fakeReturns.result2 return fakeReturns.result1, fakeReturns.result2
} }
func (fake *FakeInviteService) ConsumeCallCount() int { func (fake *FakeInvitesService) ConsumeCallCount() int {
fake.consumeMutex.RLock() fake.consumeMutex.RLock()
defer fake.consumeMutex.RUnlock() defer fake.consumeMutex.RUnlock()
return len(fake.consumeArgsForCall) return len(fake.consumeArgsForCall)
} }
func (fake *FakeInviteService) ConsumeCalls(stub func(context.Context, string, refs.FeedRef) (roomdb.Invite, error)) { func (fake *FakeInvitesService) ConsumeCalls(stub func(context.Context, string, refs.FeedRef) (roomdb.Invite, error)) {
fake.consumeMutex.Lock() fake.consumeMutex.Lock()
defer fake.consumeMutex.Unlock() defer fake.consumeMutex.Unlock()
fake.ConsumeStub = stub fake.ConsumeStub = stub
} }
func (fake *FakeInviteService) ConsumeArgsForCall(i int) (context.Context, string, refs.FeedRef) { func (fake *FakeInvitesService) ConsumeArgsForCall(i int) (context.Context, string, refs.FeedRef) {
fake.consumeMutex.RLock() fake.consumeMutex.RLock()
defer fake.consumeMutex.RUnlock() defer fake.consumeMutex.RUnlock()
argsForCall := fake.consumeArgsForCall[i] argsForCall := fake.consumeArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3 return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3
} }
func (fake *FakeInviteService) ConsumeReturns(result1 roomdb.Invite, result2 error) { func (fake *FakeInvitesService) ConsumeReturns(result1 roomdb.Invite, result2 error) {
fake.consumeMutex.Lock() fake.consumeMutex.Lock()
defer fake.consumeMutex.Unlock() defer fake.consumeMutex.Unlock()
fake.ConsumeStub = nil fake.ConsumeStub = nil
@ -147,7 +147,7 @@ func (fake *FakeInviteService) ConsumeReturns(result1 roomdb.Invite, result2 err
}{result1, result2} }{result1, result2}
} }
func (fake *FakeInviteService) ConsumeReturnsOnCall(i int, result1 roomdb.Invite, result2 error) { func (fake *FakeInvitesService) ConsumeReturnsOnCall(i int, result1 roomdb.Invite, result2 error) {
fake.consumeMutex.Lock() fake.consumeMutex.Lock()
defer fake.consumeMutex.Unlock() defer fake.consumeMutex.Unlock()
fake.ConsumeStub = nil fake.ConsumeStub = nil
@ -163,7 +163,7 @@ func (fake *FakeInviteService) ConsumeReturnsOnCall(i int, result1 roomdb.Invite
}{result1, result2} }{result1, result2}
} }
func (fake *FakeInviteService) Create(arg1 context.Context, arg2 int64, arg3 string) (string, error) { func (fake *FakeInvitesService) Create(arg1 context.Context, arg2 int64, arg3 string) (string, error) {
fake.createMutex.Lock() fake.createMutex.Lock()
ret, specificReturn := fake.createReturnsOnCall[len(fake.createArgsForCall)] ret, specificReturn := fake.createReturnsOnCall[len(fake.createArgsForCall)]
fake.createArgsForCall = append(fake.createArgsForCall, struct { fake.createArgsForCall = append(fake.createArgsForCall, struct {
@ -184,26 +184,26 @@ func (fake *FakeInviteService) Create(arg1 context.Context, arg2 int64, arg3 str
return fakeReturns.result1, fakeReturns.result2 return fakeReturns.result1, fakeReturns.result2
} }
func (fake *FakeInviteService) CreateCallCount() int { func (fake *FakeInvitesService) CreateCallCount() int {
fake.createMutex.RLock() fake.createMutex.RLock()
defer fake.createMutex.RUnlock() defer fake.createMutex.RUnlock()
return len(fake.createArgsForCall) return len(fake.createArgsForCall)
} }
func (fake *FakeInviteService) CreateCalls(stub func(context.Context, int64, string) (string, error)) { func (fake *FakeInvitesService) CreateCalls(stub func(context.Context, int64, string) (string, error)) {
fake.createMutex.Lock() fake.createMutex.Lock()
defer fake.createMutex.Unlock() defer fake.createMutex.Unlock()
fake.CreateStub = stub fake.CreateStub = stub
} }
func (fake *FakeInviteService) CreateArgsForCall(i int) (context.Context, int64, string) { func (fake *FakeInvitesService) CreateArgsForCall(i int) (context.Context, int64, string) {
fake.createMutex.RLock() fake.createMutex.RLock()
defer fake.createMutex.RUnlock() defer fake.createMutex.RUnlock()
argsForCall := fake.createArgsForCall[i] argsForCall := fake.createArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3 return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3
} }
func (fake *FakeInviteService) CreateReturns(result1 string, result2 error) { func (fake *FakeInvitesService) CreateReturns(result1 string, result2 error) {
fake.createMutex.Lock() fake.createMutex.Lock()
defer fake.createMutex.Unlock() defer fake.createMutex.Unlock()
fake.CreateStub = nil fake.CreateStub = nil
@ -213,7 +213,7 @@ func (fake *FakeInviteService) CreateReturns(result1 string, result2 error) {
}{result1, result2} }{result1, result2}
} }
func (fake *FakeInviteService) CreateReturnsOnCall(i int, result1 string, result2 error) { func (fake *FakeInvitesService) CreateReturnsOnCall(i int, result1 string, result2 error) {
fake.createMutex.Lock() fake.createMutex.Lock()
defer fake.createMutex.Unlock() defer fake.createMutex.Unlock()
fake.CreateStub = nil fake.CreateStub = nil
@ -229,7 +229,7 @@ func (fake *FakeInviteService) CreateReturnsOnCall(i int, result1 string, result
}{result1, result2} }{result1, result2}
} }
func (fake *FakeInviteService) GetByID(arg1 context.Context, arg2 int64) (roomdb.Invite, error) { func (fake *FakeInvitesService) GetByID(arg1 context.Context, arg2 int64) (roomdb.Invite, error) {
fake.getByIDMutex.Lock() fake.getByIDMutex.Lock()
ret, specificReturn := fake.getByIDReturnsOnCall[len(fake.getByIDArgsForCall)] ret, specificReturn := fake.getByIDReturnsOnCall[len(fake.getByIDArgsForCall)]
fake.getByIDArgsForCall = append(fake.getByIDArgsForCall, struct { fake.getByIDArgsForCall = append(fake.getByIDArgsForCall, struct {
@ -249,26 +249,26 @@ func (fake *FakeInviteService) GetByID(arg1 context.Context, arg2 int64) (roomdb
return fakeReturns.result1, fakeReturns.result2 return fakeReturns.result1, fakeReturns.result2
} }
func (fake *FakeInviteService) GetByIDCallCount() int { func (fake *FakeInvitesService) GetByIDCallCount() int {
fake.getByIDMutex.RLock() fake.getByIDMutex.RLock()
defer fake.getByIDMutex.RUnlock() defer fake.getByIDMutex.RUnlock()
return len(fake.getByIDArgsForCall) return len(fake.getByIDArgsForCall)
} }
func (fake *FakeInviteService) GetByIDCalls(stub func(context.Context, int64) (roomdb.Invite, error)) { func (fake *FakeInvitesService) GetByIDCalls(stub func(context.Context, int64) (roomdb.Invite, error)) {
fake.getByIDMutex.Lock() fake.getByIDMutex.Lock()
defer fake.getByIDMutex.Unlock() defer fake.getByIDMutex.Unlock()
fake.GetByIDStub = stub fake.GetByIDStub = stub
} }
func (fake *FakeInviteService) GetByIDArgsForCall(i int) (context.Context, int64) { func (fake *FakeInvitesService) GetByIDArgsForCall(i int) (context.Context, int64) {
fake.getByIDMutex.RLock() fake.getByIDMutex.RLock()
defer fake.getByIDMutex.RUnlock() defer fake.getByIDMutex.RUnlock()
argsForCall := fake.getByIDArgsForCall[i] argsForCall := fake.getByIDArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2 return argsForCall.arg1, argsForCall.arg2
} }
func (fake *FakeInviteService) GetByIDReturns(result1 roomdb.Invite, result2 error) { func (fake *FakeInvitesService) GetByIDReturns(result1 roomdb.Invite, result2 error) {
fake.getByIDMutex.Lock() fake.getByIDMutex.Lock()
defer fake.getByIDMutex.Unlock() defer fake.getByIDMutex.Unlock()
fake.GetByIDStub = nil fake.GetByIDStub = nil
@ -278,7 +278,7 @@ func (fake *FakeInviteService) GetByIDReturns(result1 roomdb.Invite, result2 err
}{result1, result2} }{result1, result2}
} }
func (fake *FakeInviteService) GetByIDReturnsOnCall(i int, result1 roomdb.Invite, result2 error) { func (fake *FakeInvitesService) GetByIDReturnsOnCall(i int, result1 roomdb.Invite, result2 error) {
fake.getByIDMutex.Lock() fake.getByIDMutex.Lock()
defer fake.getByIDMutex.Unlock() defer fake.getByIDMutex.Unlock()
fake.GetByIDStub = nil fake.GetByIDStub = nil
@ -294,7 +294,7 @@ func (fake *FakeInviteService) GetByIDReturnsOnCall(i int, result1 roomdb.Invite
}{result1, result2} }{result1, result2}
} }
func (fake *FakeInviteService) GetByToken(arg1 context.Context, arg2 string) (roomdb.Invite, error) { func (fake *FakeInvitesService) GetByToken(arg1 context.Context, arg2 string) (roomdb.Invite, error) {
fake.getByTokenMutex.Lock() fake.getByTokenMutex.Lock()
ret, specificReturn := fake.getByTokenReturnsOnCall[len(fake.getByTokenArgsForCall)] ret, specificReturn := fake.getByTokenReturnsOnCall[len(fake.getByTokenArgsForCall)]
fake.getByTokenArgsForCall = append(fake.getByTokenArgsForCall, struct { fake.getByTokenArgsForCall = append(fake.getByTokenArgsForCall, struct {
@ -314,26 +314,26 @@ func (fake *FakeInviteService) GetByToken(arg1 context.Context, arg2 string) (ro
return fakeReturns.result1, fakeReturns.result2 return fakeReturns.result1, fakeReturns.result2
} }
func (fake *FakeInviteService) GetByTokenCallCount() int { func (fake *FakeInvitesService) GetByTokenCallCount() int {
fake.getByTokenMutex.RLock() fake.getByTokenMutex.RLock()
defer fake.getByTokenMutex.RUnlock() defer fake.getByTokenMutex.RUnlock()
return len(fake.getByTokenArgsForCall) return len(fake.getByTokenArgsForCall)
} }
func (fake *FakeInviteService) GetByTokenCalls(stub func(context.Context, string) (roomdb.Invite, error)) { func (fake *FakeInvitesService) GetByTokenCalls(stub func(context.Context, string) (roomdb.Invite, error)) {
fake.getByTokenMutex.Lock() fake.getByTokenMutex.Lock()
defer fake.getByTokenMutex.Unlock() defer fake.getByTokenMutex.Unlock()
fake.GetByTokenStub = stub fake.GetByTokenStub = stub
} }
func (fake *FakeInviteService) GetByTokenArgsForCall(i int) (context.Context, string) { func (fake *FakeInvitesService) GetByTokenArgsForCall(i int) (context.Context, string) {
fake.getByTokenMutex.RLock() fake.getByTokenMutex.RLock()
defer fake.getByTokenMutex.RUnlock() defer fake.getByTokenMutex.RUnlock()
argsForCall := fake.getByTokenArgsForCall[i] argsForCall := fake.getByTokenArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2 return argsForCall.arg1, argsForCall.arg2
} }
func (fake *FakeInviteService) GetByTokenReturns(result1 roomdb.Invite, result2 error) { func (fake *FakeInvitesService) GetByTokenReturns(result1 roomdb.Invite, result2 error) {
fake.getByTokenMutex.Lock() fake.getByTokenMutex.Lock()
defer fake.getByTokenMutex.Unlock() defer fake.getByTokenMutex.Unlock()
fake.GetByTokenStub = nil fake.GetByTokenStub = nil
@ -343,7 +343,7 @@ func (fake *FakeInviteService) GetByTokenReturns(result1 roomdb.Invite, result2
}{result1, result2} }{result1, result2}
} }
func (fake *FakeInviteService) GetByTokenReturnsOnCall(i int, result1 roomdb.Invite, result2 error) { func (fake *FakeInvitesService) GetByTokenReturnsOnCall(i int, result1 roomdb.Invite, result2 error) {
fake.getByTokenMutex.Lock() fake.getByTokenMutex.Lock()
defer fake.getByTokenMutex.Unlock() defer fake.getByTokenMutex.Unlock()
fake.GetByTokenStub = nil fake.GetByTokenStub = nil
@ -359,7 +359,7 @@ func (fake *FakeInviteService) GetByTokenReturnsOnCall(i int, result1 roomdb.Inv
}{result1, result2} }{result1, result2}
} }
func (fake *FakeInviteService) List(arg1 context.Context) ([]roomdb.Invite, error) { func (fake *FakeInvitesService) List(arg1 context.Context) ([]roomdb.Invite, error) {
fake.listMutex.Lock() fake.listMutex.Lock()
ret, specificReturn := fake.listReturnsOnCall[len(fake.listArgsForCall)] ret, specificReturn := fake.listReturnsOnCall[len(fake.listArgsForCall)]
fake.listArgsForCall = append(fake.listArgsForCall, struct { fake.listArgsForCall = append(fake.listArgsForCall, struct {
@ -378,26 +378,26 @@ func (fake *FakeInviteService) List(arg1 context.Context) ([]roomdb.Invite, erro
return fakeReturns.result1, fakeReturns.result2 return fakeReturns.result1, fakeReturns.result2
} }
func (fake *FakeInviteService) ListCallCount() int { func (fake *FakeInvitesService) ListCallCount() int {
fake.listMutex.RLock() fake.listMutex.RLock()
defer fake.listMutex.RUnlock() defer fake.listMutex.RUnlock()
return len(fake.listArgsForCall) return len(fake.listArgsForCall)
} }
func (fake *FakeInviteService) ListCalls(stub func(context.Context) ([]roomdb.Invite, error)) { func (fake *FakeInvitesService) ListCalls(stub func(context.Context) ([]roomdb.Invite, error)) {
fake.listMutex.Lock() fake.listMutex.Lock()
defer fake.listMutex.Unlock() defer fake.listMutex.Unlock()
fake.ListStub = stub fake.ListStub = stub
} }
func (fake *FakeInviteService) ListArgsForCall(i int) context.Context { func (fake *FakeInvitesService) ListArgsForCall(i int) context.Context {
fake.listMutex.RLock() fake.listMutex.RLock()
defer fake.listMutex.RUnlock() defer fake.listMutex.RUnlock()
argsForCall := fake.listArgsForCall[i] argsForCall := fake.listArgsForCall[i]
return argsForCall.arg1 return argsForCall.arg1
} }
func (fake *FakeInviteService) ListReturns(result1 []roomdb.Invite, result2 error) { func (fake *FakeInvitesService) ListReturns(result1 []roomdb.Invite, result2 error) {
fake.listMutex.Lock() fake.listMutex.Lock()
defer fake.listMutex.Unlock() defer fake.listMutex.Unlock()
fake.ListStub = nil fake.ListStub = nil
@ -407,7 +407,7 @@ func (fake *FakeInviteService) ListReturns(result1 []roomdb.Invite, result2 erro
}{result1, result2} }{result1, result2}
} }
func (fake *FakeInviteService) ListReturnsOnCall(i int, result1 []roomdb.Invite, result2 error) { func (fake *FakeInvitesService) ListReturnsOnCall(i int, result1 []roomdb.Invite, result2 error) {
fake.listMutex.Lock() fake.listMutex.Lock()
defer fake.listMutex.Unlock() defer fake.listMutex.Unlock()
fake.ListStub = nil fake.ListStub = nil
@ -423,7 +423,7 @@ func (fake *FakeInviteService) ListReturnsOnCall(i int, result1 []roomdb.Invite,
}{result1, result2} }{result1, result2}
} }
func (fake *FakeInviteService) Revoke(arg1 context.Context, arg2 int64) error { func (fake *FakeInvitesService) Revoke(arg1 context.Context, arg2 int64) error {
fake.revokeMutex.Lock() fake.revokeMutex.Lock()
ret, specificReturn := fake.revokeReturnsOnCall[len(fake.revokeArgsForCall)] ret, specificReturn := fake.revokeReturnsOnCall[len(fake.revokeArgsForCall)]
fake.revokeArgsForCall = append(fake.revokeArgsForCall, struct { fake.revokeArgsForCall = append(fake.revokeArgsForCall, struct {
@ -443,26 +443,26 @@ func (fake *FakeInviteService) Revoke(arg1 context.Context, arg2 int64) error {
return fakeReturns.result1 return fakeReturns.result1
} }
func (fake *FakeInviteService) RevokeCallCount() int { func (fake *FakeInvitesService) RevokeCallCount() int {
fake.revokeMutex.RLock() fake.revokeMutex.RLock()
defer fake.revokeMutex.RUnlock() defer fake.revokeMutex.RUnlock()
return len(fake.revokeArgsForCall) return len(fake.revokeArgsForCall)
} }
func (fake *FakeInviteService) RevokeCalls(stub func(context.Context, int64) error) { func (fake *FakeInvitesService) RevokeCalls(stub func(context.Context, int64) error) {
fake.revokeMutex.Lock() fake.revokeMutex.Lock()
defer fake.revokeMutex.Unlock() defer fake.revokeMutex.Unlock()
fake.RevokeStub = stub fake.RevokeStub = stub
} }
func (fake *FakeInviteService) RevokeArgsForCall(i int) (context.Context, int64) { func (fake *FakeInvitesService) RevokeArgsForCall(i int) (context.Context, int64) {
fake.revokeMutex.RLock() fake.revokeMutex.RLock()
defer fake.revokeMutex.RUnlock() defer fake.revokeMutex.RUnlock()
argsForCall := fake.revokeArgsForCall[i] argsForCall := fake.revokeArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2 return argsForCall.arg1, argsForCall.arg2
} }
func (fake *FakeInviteService) RevokeReturns(result1 error) { func (fake *FakeInvitesService) RevokeReturns(result1 error) {
fake.revokeMutex.Lock() fake.revokeMutex.Lock()
defer fake.revokeMutex.Unlock() defer fake.revokeMutex.Unlock()
fake.RevokeStub = nil fake.RevokeStub = nil
@ -471,7 +471,7 @@ func (fake *FakeInviteService) RevokeReturns(result1 error) {
}{result1} }{result1}
} }
func (fake *FakeInviteService) RevokeReturnsOnCall(i int, result1 error) { func (fake *FakeInvitesService) RevokeReturnsOnCall(i int, result1 error) {
fake.revokeMutex.Lock() fake.revokeMutex.Lock()
defer fake.revokeMutex.Unlock() defer fake.revokeMutex.Unlock()
fake.RevokeStub = nil fake.RevokeStub = nil
@ -485,7 +485,7 @@ func (fake *FakeInviteService) RevokeReturnsOnCall(i int, result1 error) {
}{result1} }{result1}
} }
func (fake *FakeInviteService) Invocations() map[string][][]interface{} { func (fake *FakeInvitesService) Invocations() map[string][][]interface{} {
fake.invocationsMutex.RLock() fake.invocationsMutex.RLock()
defer fake.invocationsMutex.RUnlock() defer fake.invocationsMutex.RUnlock()
fake.consumeMutex.RLock() fake.consumeMutex.RLock()
@ -507,7 +507,7 @@ func (fake *FakeInviteService) Invocations() map[string][][]interface{} {
return copiedInvocations return copiedInvocations
} }
func (fake *FakeInviteService) recordInvocation(key string, args []interface{}) { func (fake *FakeInvitesService) recordInvocation(key string, args []interface{}) {
fake.invocationsMutex.Lock() fake.invocationsMutex.Lock()
defer fake.invocationsMutex.Unlock() defer fake.invocationsMutex.Unlock()
if fake.invocations == nil { if fake.invocations == nil {
@ -519,4 +519,4 @@ func (fake *FakeInviteService) recordInvocation(key string, args []interface{})
fake.invocations[key] = append(fake.invocations[key], args) fake.invocations[key] = append(fake.invocations[key], args)
} }
var _ roomdb.InviteService = new(FakeInviteService) var _ roomdb.InvitesService = new(FakeInvitesService)

666
roomdb/mockdb/members.go Normal file
View File

@ -0,0 +1,666 @@
// Code generated by counterfeiter. DO NOT EDIT.
package mockdb
import (
"context"
"sync"
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb"
refs "go.mindeco.de/ssb-refs"
)
type FakeMembersService struct {
AddStub func(context.Context, string, refs.FeedRef, roomdb.Role) (int64, error)
addMutex sync.RWMutex
addArgsForCall []struct {
arg1 context.Context
arg2 string
arg3 refs.FeedRef
arg4 roomdb.Role
}
addReturns struct {
result1 int64
result2 error
}
addReturnsOnCall map[int]struct {
result1 int64
result2 error
}
GetByIDStub func(context.Context, int64) (roomdb.Member, error)
getByIDMutex sync.RWMutex
getByIDArgsForCall []struct {
arg1 context.Context
arg2 int64
}
getByIDReturns struct {
result1 roomdb.Member
result2 error
}
getByIDReturnsOnCall map[int]struct {
result1 roomdb.Member
result2 error
}
HasFeedStub func(context.Context, refs.FeedRef) bool
hasFeedMutex sync.RWMutex
hasFeedArgsForCall []struct {
arg1 context.Context
arg2 refs.FeedRef
}
hasFeedReturns struct {
result1 bool
}
hasFeedReturnsOnCall map[int]struct {
result1 bool
}
HasIDStub func(context.Context, int64) bool
hasIDMutex sync.RWMutex
hasIDArgsForCall []struct {
arg1 context.Context
arg2 int64
}
hasIDReturns struct {
result1 bool
}
hasIDReturnsOnCall map[int]struct {
result1 bool
}
ListStub func(context.Context) ([]roomdb.Member, error)
listMutex sync.RWMutex
listArgsForCall []struct {
arg1 context.Context
}
listReturns struct {
result1 []roomdb.Member
result2 error
}
listReturnsOnCall map[int]struct {
result1 []roomdb.Member
result2 error
}
RemoveFeedStub func(context.Context, refs.FeedRef) error
removeFeedMutex sync.RWMutex
removeFeedArgsForCall []struct {
arg1 context.Context
arg2 refs.FeedRef
}
removeFeedReturns struct {
result1 error
}
removeFeedReturnsOnCall map[int]struct {
result1 error
}
RemoveIDStub func(context.Context, int64) error
removeIDMutex sync.RWMutex
removeIDArgsForCall []struct {
arg1 context.Context
arg2 int64
}
removeIDReturns struct {
result1 error
}
removeIDReturnsOnCall map[int]struct {
result1 error
}
SetRoleStub func(context.Context, int64, roomdb.Role) error
setRoleMutex sync.RWMutex
setRoleArgsForCall []struct {
arg1 context.Context
arg2 int64
arg3 roomdb.Role
}
setRoleReturns struct {
result1 error
}
setRoleReturnsOnCall map[int]struct {
result1 error
}
invocations map[string][][]interface{}
invocationsMutex sync.RWMutex
}
func (fake *FakeMembersService) Add(arg1 context.Context, arg2 string, arg3 refs.FeedRef, arg4 roomdb.Role) (int64, error) {
fake.addMutex.Lock()
ret, specificReturn := fake.addReturnsOnCall[len(fake.addArgsForCall)]
fake.addArgsForCall = append(fake.addArgsForCall, struct {
arg1 context.Context
arg2 string
arg3 refs.FeedRef
arg4 roomdb.Role
}{arg1, arg2, arg3, arg4})
stub := fake.AddStub
fakeReturns := fake.addReturns
fake.recordInvocation("Add", []interface{}{arg1, arg2, arg3, arg4})
fake.addMutex.Unlock()
if stub != nil {
return stub(arg1, arg2, arg3, arg4)
}
if specificReturn {
return ret.result1, ret.result2
}
return fakeReturns.result1, fakeReturns.result2
}
func (fake *FakeMembersService) AddCallCount() int {
fake.addMutex.RLock()
defer fake.addMutex.RUnlock()
return len(fake.addArgsForCall)
}
func (fake *FakeMembersService) AddCalls(stub func(context.Context, string, refs.FeedRef, roomdb.Role) (int64, error)) {
fake.addMutex.Lock()
defer fake.addMutex.Unlock()
fake.AddStub = stub
}
func (fake *FakeMembersService) AddArgsForCall(i int) (context.Context, string, refs.FeedRef, roomdb.Role) {
fake.addMutex.RLock()
defer fake.addMutex.RUnlock()
argsForCall := fake.addArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3, argsForCall.arg4
}
func (fake *FakeMembersService) AddReturns(result1 int64, result2 error) {
fake.addMutex.Lock()
defer fake.addMutex.Unlock()
fake.AddStub = nil
fake.addReturns = struct {
result1 int64
result2 error
}{result1, result2}
}
func (fake *FakeMembersService) AddReturnsOnCall(i int, result1 int64, result2 error) {
fake.addMutex.Lock()
defer fake.addMutex.Unlock()
fake.AddStub = nil
if fake.addReturnsOnCall == nil {
fake.addReturnsOnCall = make(map[int]struct {
result1 int64
result2 error
})
}
fake.addReturnsOnCall[i] = struct {
result1 int64
result2 error
}{result1, result2}
}
func (fake *FakeMembersService) GetByID(arg1 context.Context, arg2 int64) (roomdb.Member, error) {
fake.getByIDMutex.Lock()
ret, specificReturn := fake.getByIDReturnsOnCall[len(fake.getByIDArgsForCall)]
fake.getByIDArgsForCall = append(fake.getByIDArgsForCall, struct {
arg1 context.Context
arg2 int64
}{arg1, arg2})
stub := fake.GetByIDStub
fakeReturns := fake.getByIDReturns
fake.recordInvocation("GetByID", []interface{}{arg1, arg2})
fake.getByIDMutex.Unlock()
if stub != nil {
return stub(arg1, arg2)
}
if specificReturn {
return ret.result1, ret.result2
}
return fakeReturns.result1, fakeReturns.result2
}
func (fake *FakeMembersService) GetByIDCallCount() int {
fake.getByIDMutex.RLock()
defer fake.getByIDMutex.RUnlock()
return len(fake.getByIDArgsForCall)
}
func (fake *FakeMembersService) GetByIDCalls(stub func(context.Context, int64) (roomdb.Member, error)) {
fake.getByIDMutex.Lock()
defer fake.getByIDMutex.Unlock()
fake.GetByIDStub = stub
}
func (fake *FakeMembersService) GetByIDArgsForCall(i int) (context.Context, int64) {
fake.getByIDMutex.RLock()
defer fake.getByIDMutex.RUnlock()
argsForCall := fake.getByIDArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2
}
func (fake *FakeMembersService) GetByIDReturns(result1 roomdb.Member, result2 error) {
fake.getByIDMutex.Lock()
defer fake.getByIDMutex.Unlock()
fake.GetByIDStub = nil
fake.getByIDReturns = struct {
result1 roomdb.Member
result2 error
}{result1, result2}
}
func (fake *FakeMembersService) GetByIDReturnsOnCall(i int, result1 roomdb.Member, result2 error) {
fake.getByIDMutex.Lock()
defer fake.getByIDMutex.Unlock()
fake.GetByIDStub = nil
if fake.getByIDReturnsOnCall == nil {
fake.getByIDReturnsOnCall = make(map[int]struct {
result1 roomdb.Member
result2 error
})
}
fake.getByIDReturnsOnCall[i] = struct {
result1 roomdb.Member
result2 error
}{result1, result2}
}
func (fake *FakeMembersService) HasFeed(arg1 context.Context, arg2 refs.FeedRef) bool {
fake.hasFeedMutex.Lock()
ret, specificReturn := fake.hasFeedReturnsOnCall[len(fake.hasFeedArgsForCall)]
fake.hasFeedArgsForCall = append(fake.hasFeedArgsForCall, struct {
arg1 context.Context
arg2 refs.FeedRef
}{arg1, arg2})
stub := fake.HasFeedStub
fakeReturns := fake.hasFeedReturns
fake.recordInvocation("HasFeed", []interface{}{arg1, arg2})
fake.hasFeedMutex.Unlock()
if stub != nil {
return stub(arg1, arg2)
}
if specificReturn {
return ret.result1
}
return fakeReturns.result1
}
func (fake *FakeMembersService) HasFeedCallCount() int {
fake.hasFeedMutex.RLock()
defer fake.hasFeedMutex.RUnlock()
return len(fake.hasFeedArgsForCall)
}
func (fake *FakeMembersService) HasFeedCalls(stub func(context.Context, refs.FeedRef) bool) {
fake.hasFeedMutex.Lock()
defer fake.hasFeedMutex.Unlock()
fake.HasFeedStub = stub
}
func (fake *FakeMembersService) HasFeedArgsForCall(i int) (context.Context, refs.FeedRef) {
fake.hasFeedMutex.RLock()
defer fake.hasFeedMutex.RUnlock()
argsForCall := fake.hasFeedArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2
}
func (fake *FakeMembersService) HasFeedReturns(result1 bool) {
fake.hasFeedMutex.Lock()
defer fake.hasFeedMutex.Unlock()
fake.HasFeedStub = nil
fake.hasFeedReturns = struct {
result1 bool
}{result1}
}
func (fake *FakeMembersService) HasFeedReturnsOnCall(i int, result1 bool) {
fake.hasFeedMutex.Lock()
defer fake.hasFeedMutex.Unlock()
fake.HasFeedStub = nil
if fake.hasFeedReturnsOnCall == nil {
fake.hasFeedReturnsOnCall = make(map[int]struct {
result1 bool
})
}
fake.hasFeedReturnsOnCall[i] = struct {
result1 bool
}{result1}
}
func (fake *FakeMembersService) HasID(arg1 context.Context, arg2 int64) bool {
fake.hasIDMutex.Lock()
ret, specificReturn := fake.hasIDReturnsOnCall[len(fake.hasIDArgsForCall)]
fake.hasIDArgsForCall = append(fake.hasIDArgsForCall, struct {
arg1 context.Context
arg2 int64
}{arg1, arg2})
stub := fake.HasIDStub
fakeReturns := fake.hasIDReturns
fake.recordInvocation("HasID", []interface{}{arg1, arg2})
fake.hasIDMutex.Unlock()
if stub != nil {
return stub(arg1, arg2)
}
if specificReturn {
return ret.result1
}
return fakeReturns.result1
}
func (fake *FakeMembersService) HasIDCallCount() int {
fake.hasIDMutex.RLock()
defer fake.hasIDMutex.RUnlock()
return len(fake.hasIDArgsForCall)
}
func (fake *FakeMembersService) HasIDCalls(stub func(context.Context, int64) bool) {
fake.hasIDMutex.Lock()
defer fake.hasIDMutex.Unlock()
fake.HasIDStub = stub
}
func (fake *FakeMembersService) HasIDArgsForCall(i int) (context.Context, int64) {
fake.hasIDMutex.RLock()
defer fake.hasIDMutex.RUnlock()
argsForCall := fake.hasIDArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2
}
func (fake *FakeMembersService) HasIDReturns(result1 bool) {
fake.hasIDMutex.Lock()
defer fake.hasIDMutex.Unlock()
fake.HasIDStub = nil
fake.hasIDReturns = struct {
result1 bool
}{result1}
}
func (fake *FakeMembersService) HasIDReturnsOnCall(i int, result1 bool) {
fake.hasIDMutex.Lock()
defer fake.hasIDMutex.Unlock()
fake.HasIDStub = nil
if fake.hasIDReturnsOnCall == nil {
fake.hasIDReturnsOnCall = make(map[int]struct {
result1 bool
})
}
fake.hasIDReturnsOnCall[i] = struct {
result1 bool
}{result1}
}
func (fake *FakeMembersService) List(arg1 context.Context) ([]roomdb.Member, error) {
fake.listMutex.Lock()
ret, specificReturn := fake.listReturnsOnCall[len(fake.listArgsForCall)]
fake.listArgsForCall = append(fake.listArgsForCall, struct {
arg1 context.Context
}{arg1})
stub := fake.ListStub
fakeReturns := fake.listReturns
fake.recordInvocation("List", []interface{}{arg1})
fake.listMutex.Unlock()
if stub != nil {
return stub(arg1)
}
if specificReturn {
return ret.result1, ret.result2
}
return fakeReturns.result1, fakeReturns.result2
}
func (fake *FakeMembersService) ListCallCount() int {
fake.listMutex.RLock()
defer fake.listMutex.RUnlock()
return len(fake.listArgsForCall)
}
func (fake *FakeMembersService) ListCalls(stub func(context.Context) ([]roomdb.Member, error)) {
fake.listMutex.Lock()
defer fake.listMutex.Unlock()
fake.ListStub = stub
}
func (fake *FakeMembersService) ListArgsForCall(i int) context.Context {
fake.listMutex.RLock()
defer fake.listMutex.RUnlock()
argsForCall := fake.listArgsForCall[i]
return argsForCall.arg1
}
func (fake *FakeMembersService) ListReturns(result1 []roomdb.Member, result2 error) {
fake.listMutex.Lock()
defer fake.listMutex.Unlock()
fake.ListStub = nil
fake.listReturns = struct {
result1 []roomdb.Member
result2 error
}{result1, result2}
}
func (fake *FakeMembersService) ListReturnsOnCall(i int, result1 []roomdb.Member, result2 error) {
fake.listMutex.Lock()
defer fake.listMutex.Unlock()
fake.ListStub = nil
if fake.listReturnsOnCall == nil {
fake.listReturnsOnCall = make(map[int]struct {
result1 []roomdb.Member
result2 error
})
}
fake.listReturnsOnCall[i] = struct {
result1 []roomdb.Member
result2 error
}{result1, result2}
}
func (fake *FakeMembersService) RemoveFeed(arg1 context.Context, arg2 refs.FeedRef) error {
fake.removeFeedMutex.Lock()
ret, specificReturn := fake.removeFeedReturnsOnCall[len(fake.removeFeedArgsForCall)]
fake.removeFeedArgsForCall = append(fake.removeFeedArgsForCall, struct {
arg1 context.Context
arg2 refs.FeedRef
}{arg1, arg2})
stub := fake.RemoveFeedStub
fakeReturns := fake.removeFeedReturns
fake.recordInvocation("RemoveFeed", []interface{}{arg1, arg2})
fake.removeFeedMutex.Unlock()
if stub != nil {
return stub(arg1, arg2)
}
if specificReturn {
return ret.result1
}
return fakeReturns.result1
}
func (fake *FakeMembersService) RemoveFeedCallCount() int {
fake.removeFeedMutex.RLock()
defer fake.removeFeedMutex.RUnlock()
return len(fake.removeFeedArgsForCall)
}
func (fake *FakeMembersService) RemoveFeedCalls(stub func(context.Context, refs.FeedRef) error) {
fake.removeFeedMutex.Lock()
defer fake.removeFeedMutex.Unlock()
fake.RemoveFeedStub = stub
}
func (fake *FakeMembersService) RemoveFeedArgsForCall(i int) (context.Context, refs.FeedRef) {
fake.removeFeedMutex.RLock()
defer fake.removeFeedMutex.RUnlock()
argsForCall := fake.removeFeedArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2
}
func (fake *FakeMembersService) RemoveFeedReturns(result1 error) {
fake.removeFeedMutex.Lock()
defer fake.removeFeedMutex.Unlock()
fake.RemoveFeedStub = nil
fake.removeFeedReturns = struct {
result1 error
}{result1}
}
func (fake *FakeMembersService) RemoveFeedReturnsOnCall(i int, result1 error) {
fake.removeFeedMutex.Lock()
defer fake.removeFeedMutex.Unlock()
fake.RemoveFeedStub = nil
if fake.removeFeedReturnsOnCall == nil {
fake.removeFeedReturnsOnCall = make(map[int]struct {
result1 error
})
}
fake.removeFeedReturnsOnCall[i] = struct {
result1 error
}{result1}
}
func (fake *FakeMembersService) RemoveID(arg1 context.Context, arg2 int64) error {
fake.removeIDMutex.Lock()
ret, specificReturn := fake.removeIDReturnsOnCall[len(fake.removeIDArgsForCall)]
fake.removeIDArgsForCall = append(fake.removeIDArgsForCall, struct {
arg1 context.Context
arg2 int64
}{arg1, arg2})
stub := fake.RemoveIDStub
fakeReturns := fake.removeIDReturns
fake.recordInvocation("RemoveID", []interface{}{arg1, arg2})
fake.removeIDMutex.Unlock()
if stub != nil {
return stub(arg1, arg2)
}
if specificReturn {
return ret.result1
}
return fakeReturns.result1
}
func (fake *FakeMembersService) RemoveIDCallCount() int {
fake.removeIDMutex.RLock()
defer fake.removeIDMutex.RUnlock()
return len(fake.removeIDArgsForCall)
}
func (fake *FakeMembersService) RemoveIDCalls(stub func(context.Context, int64) error) {
fake.removeIDMutex.Lock()
defer fake.removeIDMutex.Unlock()
fake.RemoveIDStub = stub
}
func (fake *FakeMembersService) RemoveIDArgsForCall(i int) (context.Context, int64) {
fake.removeIDMutex.RLock()
defer fake.removeIDMutex.RUnlock()
argsForCall := fake.removeIDArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2
}
func (fake *FakeMembersService) RemoveIDReturns(result1 error) {
fake.removeIDMutex.Lock()
defer fake.removeIDMutex.Unlock()
fake.RemoveIDStub = nil
fake.removeIDReturns = struct {
result1 error
}{result1}
}
func (fake *FakeMembersService) RemoveIDReturnsOnCall(i int, result1 error) {
fake.removeIDMutex.Lock()
defer fake.removeIDMutex.Unlock()
fake.RemoveIDStub = nil
if fake.removeIDReturnsOnCall == nil {
fake.removeIDReturnsOnCall = make(map[int]struct {
result1 error
})
}
fake.removeIDReturnsOnCall[i] = struct {
result1 error
}{result1}
}
func (fake *FakeMembersService) SetRole(arg1 context.Context, arg2 int64, arg3 roomdb.Role) error {
fake.setRoleMutex.Lock()
ret, specificReturn := fake.setRoleReturnsOnCall[len(fake.setRoleArgsForCall)]
fake.setRoleArgsForCall = append(fake.setRoleArgsForCall, struct {
arg1 context.Context
arg2 int64
arg3 roomdb.Role
}{arg1, arg2, arg3})
stub := fake.SetRoleStub
fakeReturns := fake.setRoleReturns
fake.recordInvocation("SetRole", []interface{}{arg1, arg2, arg3})
fake.setRoleMutex.Unlock()
if stub != nil {
return stub(arg1, arg2, arg3)
}
if specificReturn {
return ret.result1
}
return fakeReturns.result1
}
func (fake *FakeMembersService) SetRoleCallCount() int {
fake.setRoleMutex.RLock()
defer fake.setRoleMutex.RUnlock()
return len(fake.setRoleArgsForCall)
}
func (fake *FakeMembersService) SetRoleCalls(stub func(context.Context, int64, roomdb.Role) error) {
fake.setRoleMutex.Lock()
defer fake.setRoleMutex.Unlock()
fake.SetRoleStub = stub
}
func (fake *FakeMembersService) SetRoleArgsForCall(i int) (context.Context, int64, roomdb.Role) {
fake.setRoleMutex.RLock()
defer fake.setRoleMutex.RUnlock()
argsForCall := fake.setRoleArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3
}
func (fake *FakeMembersService) SetRoleReturns(result1 error) {
fake.setRoleMutex.Lock()
defer fake.setRoleMutex.Unlock()
fake.SetRoleStub = nil
fake.setRoleReturns = struct {
result1 error
}{result1}
}
func (fake *FakeMembersService) SetRoleReturnsOnCall(i int, result1 error) {
fake.setRoleMutex.Lock()
defer fake.setRoleMutex.Unlock()
fake.SetRoleStub = nil
if fake.setRoleReturnsOnCall == nil {
fake.setRoleReturnsOnCall = make(map[int]struct {
result1 error
})
}
fake.setRoleReturnsOnCall[i] = struct {
result1 error
}{result1}
}
func (fake *FakeMembersService) Invocations() map[string][][]interface{} {
fake.invocationsMutex.RLock()
defer fake.invocationsMutex.RUnlock()
fake.addMutex.RLock()
defer fake.addMutex.RUnlock()
fake.getByIDMutex.RLock()
defer fake.getByIDMutex.RUnlock()
fake.hasFeedMutex.RLock()
defer fake.hasFeedMutex.RUnlock()
fake.hasIDMutex.RLock()
defer fake.hasIDMutex.RUnlock()
fake.listMutex.RLock()
defer fake.listMutex.RUnlock()
fake.removeFeedMutex.RLock()
defer fake.removeFeedMutex.RUnlock()
fake.removeIDMutex.RLock()
defer fake.removeIDMutex.RUnlock()
fake.setRoleMutex.RLock()
defer fake.setRoleMutex.RUnlock()
copiedInvocations := map[string][][]interface{}{}
for key, value := range fake.invocations {
copiedInvocations[key] = value
}
return copiedInvocations
}
func (fake *FakeMembersService) recordInvocation(key string, args []interface{}) {
fake.invocationsMutex.Lock()
defer fake.invocationsMutex.Unlock()
if fake.invocations == nil {
fake.invocations = map[string][][]interface{}{}
}
if fake.invocations[key] == nil {
fake.invocations[key] = [][]interface{}{}
}
fake.invocations[key] = append(fake.invocations[key], args)
}
var _ roomdb.MembersService = new(FakeMembersService)

26
roomdb/role_string.go Normal file
View File

@ -0,0 +1,26 @@
// Code generated by "stringer -type=Role"; DO NOT EDIT.
package roomdb
import "strconv"
func _() {
// An "invalid array index" compiler error signifies that the constant values have changed.
// Re-run the stringer command to generate them again.
var x [1]struct{}
_ = x[RoleUnknown-0]
_ = x[RoleMember-1]
_ = x[RoleModerator-2]
_ = x[RoleAdmin-3]
}
const _Role_name = "RoleUnknownRoleMemberRoleModeratorRoleAdmin"
var _Role_index = [...]uint8{0, 11, 21, 34, 43}
func (i Role) String() string {
if i >= Role(len(_Role_index)-1) {
return "Role(" + strconv.FormatInt(int64(i), 10) + ")"
}
return _Role_name[_Role_index[i]:_Role_index[i+1]]
}

View File

@ -16,7 +16,7 @@ import (
) )
// compiler assertion to ensure the struct fullfills the interface // compiler assertion to ensure the struct fullfills the interface
var _ roomdb.AliasService = (*Aliases)(nil) var _ roomdb.AliasesService = (*Aliases)(nil)
type Aliases struct { type Aliases struct {
db *sql.DB db *sql.DB
@ -35,8 +35,8 @@ func (a Aliases) GetByID(ctx context.Context, id int64) (roomdb.Alias, error) {
func (a Aliases) findOne(ctx context.Context, by qm.QueryMod) (roomdb.Alias, error) { func (a Aliases) findOne(ctx context.Context, by qm.QueryMod) (roomdb.Alias, error) {
var found roomdb.Alias var found roomdb.Alias
// construct query which resolves the User relation and by which we shoudl look for it // construct query which resolves the Member relation and by which we shoudl look for it
qry := append([]qm.QueryMod{qm.Load("User")}, by) qry := append([]qm.QueryMod{qm.Load("Member")}, by)
entry, err := models.Aliases(qry...).One(ctx, a.db) entry, err := models.Aliases(qry...).One(ctx, a.db)
if err != nil { if err != nil {
@ -50,14 +50,14 @@ func (a Aliases) findOne(ctx context.Context, by qm.QueryMod) (roomdb.Alias, err
found.ID = entry.ID found.ID = entry.ID
found.Name = entry.Name found.Name = entry.Name
found.Signature = entry.Signature found.Signature = entry.Signature
found.Feed = entry.R.User.PubKey.FeedRef found.Feed = entry.R.Member.PubKey.FeedRef
return found, nil return found, nil
} }
// List returns a list of all registerd aliases // List returns a list of all registerd aliases
func (a Aliases) List(ctx context.Context) ([]roomdb.Alias, error) { func (a Aliases) List(ctx context.Context) ([]roomdb.Alias, error) {
all, err := models.Aliases(qm.Load("User")).All(ctx, a.db) all, err := models.Aliases(qm.Load("Member")).All(ctx, a.db)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -68,7 +68,7 @@ func (a Aliases) List(ctx context.Context) ([]roomdb.Alias, error) {
aliases[i] = roomdb.Alias{ aliases[i] = roomdb.Alias{
ID: entry.ID, ID: entry.ID,
Name: entry.Name, Name: entry.Name,
Feed: entry.R.User.PubKey.FeedRef, Feed: entry.R.Member.PubKey.FeedRef,
Signature: entry.Signature, Signature: entry.Signature,
} }
} }
@ -80,7 +80,7 @@ func (a Aliases) List(ctx context.Context) ([]roomdb.Alias, error) {
func (a Aliases) Register(ctx context.Context, alias string, userFeed refs.FeedRef, signature []byte) error { func (a Aliases) Register(ctx context.Context, alias string, userFeed refs.FeedRef, signature []byte) error {
return transact(a.db, func(tx *sql.Tx) error { return transact(a.db, func(tx *sql.Tx) error {
// check we have a members entry for the feed and load it to get its ID // check we have a members entry for the feed and load it to get its ID
allowListEntry, err := models.AllowLists(qm.Where("pub_key = ?", userFeed.Ref())).One(ctx, tx) memberEntry, err := models.Members(qm.Where("pub_key = ?", userFeed.Ref())).One(ctx, tx)
if err != nil { if err != nil {
if errors.Is(err, sql.ErrNoRows) { if errors.Is(err, sql.ErrNoRows) {
return roomdb.ErrNotFound return roomdb.ErrNotFound
@ -90,7 +90,7 @@ func (a Aliases) Register(ctx context.Context, alias string, userFeed refs.FeedR
var newEntry models.Alias var newEntry models.Alias
newEntry.Name = alias newEntry.Name = alias
newEntry.UserID = allowListEntry.ID newEntry.MemberID = memberEntry.ID
newEntry.Signature = signature newEntry.Signature = signature
err = newEntry.Insert(ctx, tx, boil.Infer()) err = newEntry.Insert(ctx, tx, boil.Infer())
@ -102,7 +102,7 @@ func (a Aliases) Register(ctx context.Context, alias string, userFeed refs.FeedR
// Revoke removes an alias from the system // Revoke removes an alias from the system
func (a Aliases) Revoke(ctx context.Context, alias string) error { func (a Aliases) Revoke(ctx context.Context, alias string) error {
return transact(a.db, func(tx *sql.Tx) error { return transact(a.db, func(tx *sql.Tx) error {
qry := append([]qm.QueryMod{qm.Load("User")}, qm.Where("name = ?", alias)) qry := append([]qm.QueryMod{qm.Load("Member")}, qm.Where("name = ?", alias))
entry, err := models.Aliases(qry...).One(ctx, a.db) entry, err := models.Aliases(qry...).One(ctx, a.db)
if err != nil { if err != nil {

View File

@ -65,7 +65,7 @@ func TestAliases(t *testing.T) {
r.Error(err) r.Error(err)
// allow the member // allow the member
err = db.AllowList.Add(ctx, newMember) _, err = db.Members.Add(ctx, "flaky's nick", newMember, roomdb.RoleMember)
r.NoError(err) r.NoError(err)
err = db.Aliases.Register(ctx, testName, newMember, testSig) err = db.Aliases.Register(ctx, testName, newMember, testSig)

View File

@ -8,13 +8,11 @@ import (
"fmt" "fmt"
"github.com/volatiletech/sqlboiler/v4/boil" "github.com/volatiletech/sqlboiler/v4/boil"
"github.com/volatiletech/sqlboiler/v4/queries/qm"
"golang.org/x/crypto/bcrypt" "golang.org/x/crypto/bcrypt"
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb/sqlite/models"
"github.com/volatiletech/sqlboiler/v4/queries/qm"
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb" "github.com/ssb-ngi-pointer/go-ssb-room/roomdb"
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb/sqlite/models"
) )
// compiler assertion to ensure the struct fullfills the interface // compiler assertion to ensure the struct fullfills the interface
@ -26,9 +24,12 @@ type AuthFallback struct {
// Check receives the username and password (in clear) and checks them accordingly. // Check receives the username and password (in clear) and checks them accordingly.
// If it's a valid combination it returns the user ID, or an error if they are not. // If it's a valid combination it returns the user ID, or an error if they are not.
func (af AuthFallback) Check(name, password string) (interface{}, error) { func (af AuthFallback) Check(login, password string) (interface{}, error) {
ctx := context.Background() ctx := context.Background()
found, err := models.AuthFallbacks(qm.Where("name = ?", name)).One(ctx, af.db) found, err := models.FallbackPasswords(
qm.Load("Member"),
qm.Where("login = ?", login),
).One(ctx, af.db)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -38,35 +39,35 @@ func (af AuthFallback) Check(name, password string) (interface{}, error) {
return nil, fmt.Errorf("auth/fallback: password missmatch") return nil, fmt.Errorf("auth/fallback: password missmatch")
} }
return found.ID, nil return found.R.Member.ID, nil
} }
func (af AuthFallback) Create(ctx context.Context, name string, password []byte) (int64, error) { func (af AuthFallback) Create(ctx context.Context, memberID int64, login string, password []byte) error {
var u models.AuthFallback var newPasswordEntry models.FallbackPassword
u.Name = name newPasswordEntry.MemberID = memberID
newPasswordEntry.Login = login
hashed, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost) hashed, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)
if err != nil { if err != nil {
return -1, fmt.Errorf("auth/fallback: failed to hash password for new user") return fmt.Errorf("auth/fallback: failed to hash password for new user")
} }
newPasswordEntry.PasswordHash = hashed
u.PasswordHash = hashed err = newPasswordEntry.Insert(ctx, af.db, boil.Infer())
err = u.Insert(ctx, af.db, boil.Infer())
if err != nil { if err != nil {
return -1, fmt.Errorf("auth/fallback: failed to insert new user: %w", err) return fmt.Errorf("auth/fallback: failed to insert new user: %w", err)
} }
return u.ID, nil return nil
} }
func (af AuthFallback) GetByID(ctx context.Context, uid int64) (*roomdb.User, error) { // func (af AuthFallback) GetByID(ctx context.Context, uid int64) (roomdb.Member, error) {
modelU, err := models.FindAuthFallback(ctx, af.db, uid) // modelU, err := models.FindFallbackPassword(ctx, af.db, uid)
if err != nil { // if err != nil {
return nil, err // return roomdb.Member{}, err
} // }
return &roomdb.User{ // return roomdb.Member{
ID: modelU.ID, // ID: modelU.ID,
Name: modelU.Name, // Nickname: modelU.R.Member.Nick,
}, nil // }, nil
} // }

View File

@ -1,5 +1,7 @@
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
// +build ignore
package sqlite package sqlite
import ( import (
@ -18,14 +20,15 @@ import (
) )
// compiler assertion to ensure the struct fullfills the interface // compiler assertion to ensure the struct fullfills the interface
var _ roomdb.AllowListService = (*AllowList)(nil) var _ roomdb.DeniedListService = (*DeniedList)(nil)
type AllowList struct { // The DeniedList is backed by the members table
type DeniedList struct {
db *sql.DB db *sql.DB
} }
// Add adds the feed to the list. // Add adds the feed to the list.
func (al AllowList) Add(ctx context.Context, a refs.FeedRef) error { func (al DeniedList) Add(ctx context.Context, a refs.FeedRef) error {
// single insert transaction but this makes it easier to re-use in invites.Consume // single insert transaction but this makes it easier to re-use in invites.Consume
return transact(al.db, func(tx *sql.Tx) error { return transact(al.db, func(tx *sql.Tx) error {
return al.add(ctx, tx, a) return al.add(ctx, tx, a)
@ -33,13 +36,13 @@ func (al AllowList) Add(ctx context.Context, a refs.FeedRef) error {
} }
// this add is not exported and for internal use with transactions. // this add is not exported and for internal use with transactions.
func (al AllowList) add(ctx context.Context, tx *sql.Tx, a refs.FeedRef) error { func (al DeniedList) add(ctx context.Context, tx *sql.Tx, a refs.FeedRef) error {
// TODO: better valid // TODO: better valid
if _, err := refs.ParseFeedRef(a.Ref()); err != nil { if _, err := refs.ParseFeedRef(a.Ref()); err != nil {
return err return err
} }
var entry models.AllowList var entry models.Member
entry.PubKey.FeedRef = a entry.PubKey.FeedRef = a
err := entry.Insert(ctx, tx, boil.Whitelist("pub_key")) err := entry.Insert(ctx, tx, boil.Whitelist("pub_key"))
@ -49,15 +52,15 @@ func (al AllowList) add(ctx context.Context, tx *sql.Tx, a refs.FeedRef) error {
return roomdb.ErrAlreadyAdded{Ref: a} return roomdb.ErrAlreadyAdded{Ref: a}
} }
return fmt.Errorf("allow-list: failed to insert new entry %s: %w - type:%T", entry.PubKey, err, err) return fmt.Errorf("Denied-list: failed to insert new entry %s: %w - type:%T", entry.PubKey, err, err)
} }
return nil return nil
} }
// HasFeed returns true if a feed is on the list. // HasFeed returns true if a feed is on the list.
func (al AllowList) HasFeed(ctx context.Context, h refs.FeedRef) bool { func (al DeniedList) HasFeed(ctx context.Context, h refs.FeedRef) bool {
_, err := models.AllowLists(qm.Where("pub_key = ?", h.Ref())).One(ctx, al.db) _, err := models.DeniedLists(qm.Where("pub_key = ?", h.Ref())).One(ctx, al.db)
if err != nil { if err != nil {
return false return false
} }
@ -65,8 +68,8 @@ func (al AllowList) HasFeed(ctx context.Context, h refs.FeedRef) bool {
} }
// HasID returns true if a feed is on the list. // HasID returns true if a feed is on the list.
func (al AllowList) HasID(ctx context.Context, id int64) bool { func (al DeniedList) HasID(ctx context.Context, id int64) bool {
_, err := models.FindAllowList(ctx, al.db, id) _, err := models.FindDeniedList(ctx, al.db, id)
if err != nil { if err != nil {
return false return false
} }
@ -74,9 +77,9 @@ func (al AllowList) HasID(ctx context.Context, id int64) bool {
} }
// GetByID returns the entry if a feed with that ID is on the list. // GetByID returns the entry if a feed with that ID is on the list.
func (al AllowList) GetByID(ctx context.Context, id int64) (roomdb.ListEntry, error) { func (al DeniedList) GetByID(ctx context.Context, id int64) (roomdb.ListEntry, error) {
var le roomdb.ListEntry var le roomdb.ListEntry
entry, err := models.FindAllowList(ctx, al.db, id) entry, err := models.FindDeniedList(ctx, al.db, id)
if err != nil { if err != nil {
if errors.Is(err, sql.ErrNoRows) { if errors.Is(err, sql.ErrNoRows) {
return le, roomdb.ErrNotFound return le, roomdb.ErrNotFound
@ -91,17 +94,17 @@ func (al AllowList) GetByID(ctx context.Context, id int64) (roomdb.ListEntry, er
} }
// List returns a list of all the feeds. // List returns a list of all the feeds.
func (al AllowList) List(ctx context.Context) (roomdb.ListEntries, error) { func (al DeniedList) List(ctx context.Context) (roomdb.ListEntries, error) {
all, err := models.AllowLists().All(ctx, al.db) all, err := models.DeniedLists().All(ctx, al.db)
if err != nil { if err != nil {
return nil, err return nil, err
} }
var asRefs = make(roomdb.ListEntries, len(all)) var asRefs = make(roomdb.ListEntries, len(all))
for i, allowed := range all { for i, Denieded := range all {
asRefs[i] = roomdb.ListEntry{ asRefs[i] = roomdb.ListEntry{
ID: allowed.ID, ID: Denieded.ID,
PubKey: allowed.PubKey.FeedRef, PubKey: Denieded.PubKey.FeedRef,
} }
} }
@ -109,8 +112,8 @@ func (al AllowList) List(ctx context.Context) (roomdb.ListEntries, error) {
} }
// RemoveFeed removes the feed from the list. // RemoveFeed removes the feed from the list.
func (al AllowList) RemoveFeed(ctx context.Context, r refs.FeedRef) error { func (al DeniedList) RemoveFeed(ctx context.Context, r refs.FeedRef) error {
entry, err := models.AllowLists(qm.Where("pub_key = ?", r.Ref())).One(ctx, al.db) entry, err := models.DeniedLists(qm.Where("pub_key = ?", r.Ref())).One(ctx, al.db)
if err != nil { if err != nil {
if errors.Is(err, sql.ErrNoRows) { if errors.Is(err, sql.ErrNoRows) {
return roomdb.ErrNotFound return roomdb.ErrNotFound
@ -127,8 +130,8 @@ func (al AllowList) RemoveFeed(ctx context.Context, r refs.FeedRef) error {
} }
// RemoveID removes the feed from the list. // RemoveID removes the feed from the list.
func (al AllowList) RemoveID(ctx context.Context, id int64) error { func (al DeniedList) RemoveID(ctx context.Context, id int64) error {
entry, err := models.FindAllowList(ctx, al.db, id) entry, err := models.FindDeniedList(ctx, al.db, id)
if err != nil { if err != nil {
if errors.Is(err, sql.ErrNoRows) { if errors.Is(err, sql.ErrNoRows) {
return roomdb.ErrNotFound return roomdb.ErrNotFound

View File

@ -1,3 +1,5 @@
// +build ignore
package sqlite package sqlite
import ( import (
@ -15,7 +17,7 @@ import (
refs "go.mindeco.de/ssb-refs" refs "go.mindeco.de/ssb-refs"
) )
func TestAllowList(t *testing.T) { func TestDeniedList(t *testing.T) {
r := require.New(t) r := require.New(t)
ctx := context.Background() ctx := context.Background()
@ -28,49 +30,49 @@ func TestAllowList(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
tf := refs.FeedRef{ID: bytes.Repeat([]byte("fooo"), 8), Algo: "nope"} tf := refs.FeedRef{ID: bytes.Repeat([]byte("fooo"), 8), Algo: "nope"}
err = db.AllowList.Add(ctx, tf) err = db.DeniedList.Add(ctx, tf)
r.Error(err) r.Error(err)
// looks ok at least // looks ok at least
okFeed := refs.FeedRef{ID: bytes.Repeat([]byte("acab"), 8), Algo: refs.RefAlgoFeedSSB1} okFeed := refs.FeedRef{ID: bytes.Repeat([]byte("acab"), 8), Algo: refs.RefAlgoFeedSSB1}
err = db.AllowList.Add(ctx, okFeed) err = db.DeniedList.Add(ctx, okFeed)
r.NoError(err) r.NoError(err)
// hack into the interface to get the concrete database/sql instance // hack into the interface to get the concrete database/sql instance
sqlDB := db.AllowList.(*AllowList).db sqlDB := db.DeniedList.(*DeniedList).db
count, err := models.AllowLists().Count(ctx, sqlDB) count, err := models.DeniedLists().Count(ctx, sqlDB)
r.NoError(err) r.NoError(err)
r.EqualValues(count, 1) r.EqualValues(count, 1)
lst, err := db.AllowList.List(ctx) lst, err := db.DeniedList.List(ctx)
r.NoError(err) r.NoError(err)
r.Len(lst, 1) r.Len(lst, 1)
yes := db.AllowList.HasFeed(ctx, okFeed) yes := db.DeniedList.HasFeed(ctx, okFeed)
r.True(yes) r.True(yes)
yes = db.AllowList.HasFeed(ctx, tf) yes = db.DeniedList.HasFeed(ctx, tf)
r.False(yes) r.False(yes)
err = db.AllowList.RemoveFeed(ctx, okFeed) err = db.DeniedList.RemoveFeed(ctx, okFeed)
r.NoError(err) r.NoError(err)
count, err = models.AllowLists().Count(ctx, sqlDB) count, err = models.DeniedLists().Count(ctx, sqlDB)
r.NoError(err) r.NoError(err)
r.EqualValues(count, 0) r.EqualValues(count, 0)
lst, err = db.AllowList.List(ctx) lst, err = db.DeniedList.List(ctx)
r.NoError(err) r.NoError(err)
r.Len(lst, 0) r.Len(lst, 0)
yes = db.AllowList.HasFeed(ctx, okFeed) yes = db.DeniedList.HasFeed(ctx, okFeed)
r.False(yes) r.False(yes)
r.NoError(db.Close()) r.NoError(db.Close())
} }
func TestAllowListUnique(t *testing.T) { func TestDeniedListUnique(t *testing.T) {
r := require.New(t) r := require.New(t)
ctx := context.Background() ctx := context.Background()
@ -83,20 +85,20 @@ func TestAllowListUnique(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
feedA := refs.FeedRef{ID: bytes.Repeat([]byte("1312"), 8), Algo: refs.RefAlgoFeedSSB1} feedA := refs.FeedRef{ID: bytes.Repeat([]byte("1312"), 8), Algo: refs.RefAlgoFeedSSB1}
err = db.AllowList.Add(ctx, feedA) err = db.DeniedList.Add(ctx, feedA)
r.NoError(err) r.NoError(err)
err = db.AllowList.Add(ctx, feedA) err = db.DeniedList.Add(ctx, feedA)
r.Error(err) r.Error(err)
lst, err := db.AllowList.List(ctx) lst, err := db.DeniedList.List(ctx)
r.NoError(err) r.NoError(err)
r.Len(lst, 1) r.Len(lst, 1)
r.NoError(db.Close()) r.NoError(db.Close())
} }
func TestAllowListByID(t *testing.T) { func TestDeniedListByID(t *testing.T) {
r := require.New(t) r := require.New(t)
ctx := context.Background() ctx := context.Background()
@ -109,26 +111,26 @@ func TestAllowListByID(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
feedA := refs.FeedRef{ID: bytes.Repeat([]byte("1312"), 8), Algo: refs.RefAlgoFeedSSB1} feedA := refs.FeedRef{ID: bytes.Repeat([]byte("1312"), 8), Algo: refs.RefAlgoFeedSSB1}
err = db.AllowList.Add(ctx, feedA) err = db.DeniedList.Add(ctx, feedA)
r.NoError(err) r.NoError(err)
lst, err := db.AllowList.List(ctx) lst, err := db.DeniedList.List(ctx)
r.NoError(err) r.NoError(err)
r.Len(lst, 1) r.Len(lst, 1)
yes := db.AllowList.HasID(ctx, lst[0].ID) yes := db.DeniedList.HasID(ctx, lst[0].ID)
r.True(yes) r.True(yes)
yes = db.AllowList.HasID(ctx, 666) yes = db.DeniedList.HasID(ctx, 666)
r.False(yes) r.False(yes)
err = db.AllowList.RemoveID(ctx, 666) err = db.DeniedList.RemoveID(ctx, 666)
r.Error(err) r.Error(err)
r.EqualError(err, roomdb.ErrNotFound.Error()) r.EqualError(err, roomdb.ErrNotFound.Error())
err = db.AllowList.RemoveID(ctx, lst[0].ID) err = db.DeniedList.RemoveID(ctx, lst[0].ID)
r.NoError(err) r.NoError(err)
yes = db.AllowList.HasID(ctx, lst[0].ID) yes = db.DeniedList.HasID(ctx, lst[0].ID)
r.False(yes) r.False(yes)
} }

View File

@ -6,11 +6,11 @@ set -e
go get github.com/volatiletech/sqlboiler/v4 go get github.com/volatiletech/sqlboiler/v4
go get github.com/volatiletech/sqlboiler-sqlite3 go get github.com/volatiletech/sqlboiler-sqlite3
# run the migrations (creates testrun/TestSimple/roomdb) # run the migrations (creates testrun/TestSchema/roomdb)
go test -run Simple go test -run Schema
# make sure the sqlite file was created # make sure the sqlite file was created
test -f testrun/TestSimple/roomdb || { test -f testrun/TestSchema/roomdb || {
echo 'roomdb file missing' echo 'roomdb file missing'
exit 1 exit 1
} }

View File

@ -20,14 +20,14 @@ import (
) )
// compiler assertion to ensure the struct fullfills the interface // compiler assertion to ensure the struct fullfills the interface
var _ roomdb.InviteService = (*Invites)(nil) var _ roomdb.InvitesService = (*Invites)(nil)
// Invites implements the roomdb.InviteService. // Invites implements the roomdb.InviteService.
// Tokens are stored as sha256 hashes on disk to protect against attackers gaining database read-access. // Tokens are stored as sha256 hashes on disk to protect against attackers gaining database read-access.
type Invites struct { type Invites struct {
db *sql.DB db *sql.DB
allowList *AllowList members Members
} }
// Create creates a new invite for a new member. It returns the token or an error. // Create creates a new invite for a new member. It returns the token or an error.
@ -56,7 +56,7 @@ func (i Invites) Create(ctx context.Context, createdBy int64, aliasSuggestion st
// hash the binary of the token for storage // hash the binary of the token for storage
h := sha256.New() h := sha256.New()
h.Write(tokenBytes) h.Write(tokenBytes)
newInvite.Token = fmt.Sprintf("%x", h.Sum(nil)) newInvite.HashedToken = fmt.Sprintf("%x", h.Sum(nil))
// insert the new invite // insert the new invite
err := newInvite.Insert(ctx, tx, boil.Infer()) err := newInvite.Insert(ctx, tx, boil.Infer())
@ -99,14 +99,19 @@ func (i Invites) Consume(ctx context.Context, token string, newMember refs.FeedR
err = transact(i.db, func(tx *sql.Tx) error { err = transact(i.db, func(tx *sql.Tx) error {
entry, err := models.Invites( entry, err := models.Invites(
qm.Where("active = true AND token = ?", hashedToken), qm.Where("active = true AND hashed_token = ?", hashedToken),
qm.Load("CreatedByAuthFallback"), qm.Load("CreatedByMember"),
).One(ctx, tx) ).One(ctx, tx)
if err != nil { if err != nil {
return err return err
} }
err = i.allowList.add(ctx, tx, newMember) memberNick := time.Now().Format("new-member 2006-01-02")
memberNick += "(invited by:" + entry.R.CreatedByMember.Nick + ")"
if entry.AliasSuggestion != "" {
memberNick = entry.AliasSuggestion
}
_, err = i.members.add(ctx, tx, memberNick, newMember, roomdb.RoleMember)
if err != nil { if err != nil {
return err return err
} }
@ -121,8 +126,9 @@ func (i Invites) Consume(ctx context.Context, token string, newMember refs.FeedR
inv.ID = entry.ID inv.ID = entry.ID
inv.CreatedAt = entry.CreatedAt inv.CreatedAt = entry.CreatedAt
inv.AliasSuggestion = entry.AliasSuggestion inv.AliasSuggestion = entry.AliasSuggestion
inv.CreatedBy.ID = entry.R.CreatedByAuthFallback.ID inv.CreatedBy.ID = entry.R.CreatedByMember.ID
inv.CreatedBy.Name = entry.R.CreatedByAuthFallback.Name inv.CreatedBy.Role = roomdb.Role(entry.R.CreatedByMember.Role)
inv.CreatedBy.Nickname = entry.R.CreatedByMember.Nick
return nil return nil
}) })
@ -157,7 +163,7 @@ func (i Invites) GetByToken(ctx context.Context, token string) (roomdb.Invite, e
entry, err := models.Invites( entry, err := models.Invites(
qm.Where("active = true AND token = ?", ht), qm.Where("active = true AND token = ?", ht),
qm.Load("CreatedByAuthFallback"), qm.Load("CreatedByMember"),
).One(ctx, i.db) ).One(ctx, i.db)
if err != nil { if err != nil {
if errors.Is(err, sql.ErrNoRows) { if errors.Is(err, sql.ErrNoRows) {
@ -169,8 +175,9 @@ func (i Invites) GetByToken(ctx context.Context, token string) (roomdb.Invite, e
inv.ID = entry.ID inv.ID = entry.ID
inv.CreatedAt = entry.CreatedAt inv.CreatedAt = entry.CreatedAt
inv.AliasSuggestion = entry.AliasSuggestion inv.AliasSuggestion = entry.AliasSuggestion
inv.CreatedBy.ID = entry.R.CreatedByAuthFallback.ID inv.CreatedBy.ID = entry.R.CreatedByMember.ID
inv.CreatedBy.Name = entry.R.CreatedByAuthFallback.Name inv.CreatedBy.Role = roomdb.Role(entry.R.CreatedByMember.Role)
inv.CreatedBy.Nickname = entry.R.CreatedByMember.Nick
return inv, nil return inv, nil
} }
@ -180,7 +187,7 @@ func (i Invites) GetByID(ctx context.Context, id int64) (roomdb.Invite, error) {
entry, err := models.Invites( entry, err := models.Invites(
qm.Where("active = true AND id = ?", id), qm.Where("active = true AND id = ?", id),
qm.Load("CreatedByAuthFallback"), qm.Load("CreatedByMember"),
).One(ctx, i.db) ).One(ctx, i.db)
if err != nil { if err != nil {
if errors.Is(err, sql.ErrNoRows) { if errors.Is(err, sql.ErrNoRows) {
@ -192,8 +199,9 @@ func (i Invites) GetByID(ctx context.Context, id int64) (roomdb.Invite, error) {
inv.ID = entry.ID inv.ID = entry.ID
inv.CreatedAt = entry.CreatedAt inv.CreatedAt = entry.CreatedAt
inv.AliasSuggestion = entry.AliasSuggestion inv.AliasSuggestion = entry.AliasSuggestion
inv.CreatedBy.ID = entry.R.CreatedByAuthFallback.ID inv.CreatedBy.ID = entry.R.CreatedByMember.ID
inv.CreatedBy.Name = entry.R.CreatedByAuthFallback.Name inv.CreatedBy.Role = roomdb.Role(entry.R.CreatedByMember.Role)
inv.CreatedBy.Nickname = entry.R.CreatedByMember.Nick
return inv, nil return inv, nil
} }
@ -205,7 +213,7 @@ func (i Invites) List(ctx context.Context) ([]roomdb.Invite, error) {
err := transact(i.db, func(tx *sql.Tx) error { err := transact(i.db, func(tx *sql.Tx) error {
entries, err := models.Invites( entries, err := models.Invites(
qm.Where("active = true"), qm.Where("active = true"),
qm.Load("CreatedByAuthFallback"), qm.Load("CreatedByMember"),
).All(ctx, tx) ).All(ctx, tx)
if err != nil { if err != nil {
return err return err
@ -217,8 +225,8 @@ func (i Invites) List(ctx context.Context) ([]roomdb.Invite, error) {
inv.ID = e.ID inv.ID = e.ID
inv.CreatedAt = e.CreatedAt inv.CreatedAt = e.CreatedAt
inv.AliasSuggestion = e.AliasSuggestion inv.AliasSuggestion = e.AliasSuggestion
inv.CreatedBy.ID = e.R.CreatedByAuthFallback.ID inv.CreatedBy.ID = e.R.CreatedByMember.ID
inv.CreatedBy.Name = e.R.CreatedByAuthFallback.Name inv.CreatedBy.Nickname = e.R.CreatedByMember.Nick
invs[idx] = inv invs[idx] = inv
} }

View File

@ -13,6 +13,7 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/ssb-ngi-pointer/go-ssb-room/internal/repo" "github.com/ssb-ngi-pointer/go-ssb-room/internal/repo"
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb"
refs "go.mindeco.de/ssb-refs" refs "go.mindeco.de/ssb-refs"
) )
@ -50,8 +51,9 @@ func TestInvites(t *testing.T) {
r.Error(err, "can't create invite for invalid user") r.Error(err, "can't create invite for invalid user")
}) })
testUserName := "test-user" testMemberNick := "test-user"
uid, err := db.AuthFallback.Create(ctx, testUserName, []byte("bad-password")) invitingMember := refs.FeedRef{ID: bytes.Repeat([]byte("ohai"), 8), Algo: refs.RefAlgoFeedSSB1}
uid, err := db.Members.Add(ctx, testMemberNick, invitingMember, roomdb.RoleModerator)
require.NoError(t, err, "failed to create test user") require.NoError(t, err, "failed to create test user")
t.Run("simple create and consume", func(t *testing.T) { t.Run("simple create and consume", func(t *testing.T) {
@ -71,20 +73,20 @@ func TestInvites(t *testing.T) {
r.Len(lst, 1, "expected 1 invite") r.Len(lst, 1, "expected 1 invite")
r.Equal("bestie", lst[0].AliasSuggestion) r.Equal("bestie", lst[0].AliasSuggestion)
r.Equal(testUserName, lst[0].CreatedBy.Name) r.Equal(testMemberNick, lst[0].CreatedBy.Nickname)
r.True(lst[0].CreatedAt.After(before), "expected CreatedAt to be after the start marker") r.True(lst[0].CreatedAt.After(before), "expected CreatedAt to be after the start marker")
nope := db.AllowList.HasFeed(ctx, newMember) nope := db.Members.HasFeed(ctx, newMember)
r.False(nope, "expected feed to not yet be on the allow list") r.False(nope, "expected feed to not yet be on the allow list")
inv, err := db.Invites.Consume(ctx, tok, newMember) inv, err := db.Invites.Consume(ctx, tok, newMember)
r.NoError(err, "failed to consume the invite") r.NoError(err, "failed to consume the invite")
r.Equal(testUserName, inv.CreatedBy.Name) r.Equal(testMemberNick, inv.CreatedBy.Nickname)
r.NotEqualValues(0, inv.ID, "invite ID unset") r.NotEqualValues(0, inv.ID, "invite ID unset")
r.True(inv.CreatedAt.After(before), "expected CreatedAt to be after the start marker") r.True(inv.CreatedAt.After(before), "expected CreatedAt to be after the start marker")
// consume also adds it to the allow list // consume also adds it to the allow list
yes := db.AllowList.HasFeed(ctx, newMember) yes := db.Members.HasFeed(ctx, newMember)
r.True(yes, "expected feed on the allow list") r.True(yes, "expected feed on the allow list")
lst, err = db.Invites.List(ctx) lst, err = db.Invites.List(ctx)
@ -108,7 +110,7 @@ func TestInvites(t *testing.T) {
r.Len(lst, 1, "expected 1 invite") r.Len(lst, 1, "expected 1 invite")
r.Equal("bestie", lst[0].AliasSuggestion) r.Equal("bestie", lst[0].AliasSuggestion)
r.Equal(testUserName, lst[0].CreatedBy.Name) r.Equal(testMemberNick, lst[0].CreatedBy.Nickname)
err = db.Invites.Revoke(ctx, lst[0].ID) err = db.Invites.Revoke(ctx, lst[0].ID)
r.NoError(err, "failed to consume the invite") r.NoError(err, "failed to consume the invite")

149
roomdb/sqlite/members.go Normal file
View File

@ -0,0 +1,149 @@
package sqlite
import (
"context"
"database/sql"
"fmt"
"github.com/friendsofgo/errors"
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb"
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb/sqlite/models"
"github.com/volatiletech/sqlboiler/v4/boil"
"github.com/volatiletech/sqlboiler/v4/queries/qm"
refs "go.mindeco.de/ssb-refs"
)
// compiler assertion to ensure the struct fullfills the interface
var _ roomdb.MembersService = (*Members)(nil)
type Members struct {
db *sql.DB
}
func (m Members) Add(ctx context.Context, nick string, pubKey refs.FeedRef, role roomdb.Role) (int64, error) {
var newID int64
err := transact(m.db, func(tx *sql.Tx) error {
var err error
newID, err = m.add(ctx, tx, nick, pubKey, role)
return err
})
if err != nil {
return -1, err
}
return newID, nil
}
// no receiver name because it needs to use the passed transaction
func (Members) add(ctx context.Context, tx *sql.Tx, nick string, pubKey refs.FeedRef, role roomdb.Role) (int64, error) {
if err := role.IsValid(); err != nil {
return -1, err
}
if _, err := refs.ParseFeedRef(pubKey.Ref()); err != nil {
return -1, err
}
var newMember models.Member
newMember.Nick = nick
newMember.PubKey = roomdb.DBFeedRef{FeedRef: pubKey}
newMember.Role = int64(role)
err := newMember.Insert(ctx, tx, boil.Infer())
if err != nil {
return -1, fmt.Errorf("members: failed to insert new user: %w", err)
}
return newMember.ID, nil
}
func (m Members) GetByID(ctx context.Context, mid int64) (roomdb.Member, error) {
modelU, err := models.FindMember(ctx, m.db, mid)
if err != nil {
return roomdb.Member{}, err
}
return roomdb.Member{
ID: modelU.ID,
Nickname: modelU.Nick,
}, nil
}
// HasFeed returns true if a feed is on the list.
func (m Members) HasFeed(ctx context.Context, h refs.FeedRef) bool {
_, err := models.Members(qm.Where("pub_key = ?", h.Ref())).One(ctx, m.db)
if err != nil {
return false
}
return true
}
// HasID returns true if a feed is on the list.
func (m Members) HasID(ctx context.Context, id int64) bool {
_, err := models.FindMember(ctx, m.db, id)
if err != nil {
return false
}
return true
}
// List returns a list of all the feeds.
func (m Members) List(ctx context.Context) ([]roomdb.Member, error) {
all, err := models.Members().All(ctx, m.db)
if err != nil {
return nil, err
}
var members = make([]roomdb.Member, len(all))
for i, listEntry := range all {
members[i].ID = listEntry.ID
members[i].Nickname = listEntry.Nick
members[i].Role = roomdb.Role(listEntry.Role)
members[i].PubKey = listEntry.PubKey.FeedRef
}
return members, nil
}
// RemoveFeed removes the feed from the list.
func (m Members) RemoveFeed(ctx context.Context, r refs.FeedRef) error {
entry, err := models.Members(qm.Where("pub_key = ?", r.Ref())).One(ctx, m.db)
if err != nil {
if errors.Is(err, sql.ErrNoRows) {
return roomdb.ErrNotFound
}
return err
}
_, err = entry.Delete(ctx, m.db)
if err != nil {
return err
}
return nil
}
// RemoveID removes the feed from the list.
func (m Members) RemoveID(ctx context.Context, id int64) error {
entry, err := models.FindMember(ctx, m.db, id)
if err != nil {
if errors.Is(err, sql.ErrNoRows) {
return roomdb.ErrNotFound
}
return err
}
_, err = entry.Delete(ctx, m.db)
if err != nil {
return err
}
return nil
}
// SetRole updates the role r of the passed memberID.
func (m Members) SetRole(ctx context.Context, id int64, r roomdb.Role) error {
if err := r.IsValid(); err != nil {
return err
}
panic("TODO")
}

View File

@ -0,0 +1,132 @@
package sqlite
import (
"bytes"
"context"
"os"
"path/filepath"
"testing"
"github.com/ssb-ngi-pointer/go-ssb-room/internal/repo"
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb"
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb/sqlite/models"
"github.com/stretchr/testify/require"
refs "go.mindeco.de/ssb-refs"
)
func TestMembers(t *testing.T) {
r := require.New(t)
ctx := context.Background()
testRepo := filepath.Join("testrun", t.Name())
os.RemoveAll(testRepo)
tr := repo.New(testRepo)
db, err := Open(tr)
require.NoError(t, err)
// broken feed (unknown algo)
tf := refs.FeedRef{ID: bytes.Repeat([]byte("fooo"), 8), Algo: "nope"}
_, err = db.Members.Add(ctx, "dont-add-me", tf, roomdb.RoleMember)
r.Error(err)
// looks ok at least
okFeed := refs.FeedRef{ID: bytes.Repeat([]byte("acab"), 8), Algo: refs.RefAlgoFeedSSB1}
_, err = db.Members.Add(ctx, "should-add-me", okFeed, roomdb.RoleMember)
r.NoError(err)
sqlDB := db.Members.db
count, err := models.Members().Count(ctx, sqlDB)
r.NoError(err)
r.EqualValues(count, 1)
lst, err := db.Members.List(ctx)
r.NoError(err)
r.Len(lst, 1)
yes := db.Members.HasFeed(ctx, okFeed)
r.True(yes)
yes = db.Members.HasFeed(ctx, tf)
r.False(yes)
err = db.Members.RemoveFeed(ctx, okFeed)
r.NoError(err)
count, err = models.Members().Count(ctx, sqlDB)
r.NoError(err)
r.EqualValues(count, 0)
lst, err = db.Members.List(ctx)
r.NoError(err)
r.Len(lst, 0)
yes = db.Members.HasFeed(ctx, okFeed)
r.False(yes)
r.NoError(db.Close())
}
func TestMembersUnique(t *testing.T) {
r := require.New(t)
ctx := context.Background()
testRepo := filepath.Join("testrun", t.Name())
os.RemoveAll(testRepo)
tr := repo.New(testRepo)
db, err := Open(tr)
require.NoError(t, err)
feedA := refs.FeedRef{ID: bytes.Repeat([]byte("1312"), 8), Algo: refs.RefAlgoFeedSSB1}
_, err = db.Members.Add(ctx, "add-me-first", feedA, roomdb.RoleMember)
r.NoError(err)
_, err = db.Members.Add(ctx, "dont-add-me-twice", feedA, roomdb.RoleMember)
r.Error(err)
lst, err := db.Members.List(ctx)
r.NoError(err)
r.Len(lst, 1)
r.NoError(db.Close())
}
func TestMembersByID(t *testing.T) {
r := require.New(t)
ctx := context.Background()
testRepo := filepath.Join("testrun", t.Name())
os.RemoveAll(testRepo)
tr := repo.New(testRepo)
db, err := Open(tr)
require.NoError(t, err)
feedA := refs.FeedRef{ID: bytes.Repeat([]byte("1312"), 8), Algo: refs.RefAlgoFeedSSB1}
_, err = db.Members.Add(ctx, "add-me", feedA, roomdb.RoleMember)
r.NoError(err)
lst, err := db.Members.List(ctx)
r.NoError(err)
r.Len(lst, 1)
yes := db.Members.HasID(ctx, lst[0].ID)
r.True(yes)
yes = db.Members.HasID(ctx, 666)
r.False(yes)
err = db.Members.RemoveID(ctx, 666)
r.Error(err)
r.EqualError(err, roomdb.ErrNotFound.Error())
err = db.Members.RemoveID(ctx, lst[0].ID)
r.NoError(err)
yes = db.Members.HasID(ctx, lst[0].ID)
r.False(yes)
}

View File

@ -0,0 +1,78 @@
-- +migrate Up
-- the internal users table (people who used an invite)
CREATE TABLE members (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
role INTEGER NOT NULL, -- member, moderator or admin
nick TEXT NOT NULL, -- a nick name for the user (not an alias)
pub_key TEXT NOT NULL UNIQUE,
CHECK(role > 0)
);
CREATE INDEX members_pubkeys ON members(pub_key);
-- password login for members (in case they can't use sign-in with ssb, for whatever reason)
CREATE TABLE fallback_passwords (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
login TEXT NOT NULL UNIQUE,
password_hash BLOB NOT NULL,
member_id INTEGER NOT NULL,
FOREIGN KEY ( member_id ) REFERENCES members( "id" )
);
CREATE INDEX fallback_passwords_by_login ON fallback_passwords(login);
-- single use tokens for becoming members
CREATE TABLE invites (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
hashed_token TEXT UNIQUE NOT NULL,
created_by INTEGER NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
alias_suggestion TEXT NOT NULL DEFAULT "", -- optional
active boolean NOT NULL DEFAULT TRUE,
FOREIGN KEY ( created_by ) REFERENCES members( "id" )
);
CREATE INDEX invite_active_ids ON invites(id) WHERE active=TRUE;
CREATE UNIQUE INDEX invite_active_tokens ON invites(hashed_token) WHERE active=TRUE;
CREATE INDEX invite_inactive ON invites(active);
-- name -> public key mappings
CREATE TABLE aliases (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
name TEXT UNIQUE NOT NULL,
member_id INTEGER NOT NULL,
signature BLOB NOT NULL,
FOREIGN KEY ( member_id ) REFERENCES members( "id" )
);
CREATE UNIQUE INDEX aliases_ids ON aliases(id);
CREATE UNIQUE INDEX aliases_names ON aliases(name);
-- public keys that should never ever be let into the room
CREATE TABLE denied_keys (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
pub_key TEXT NOT NULL UNIQUE,
comment TEXT NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX denied_keys_by_pubkey ON invites(active);
-- +migrate Down
DROP TABLE members;
DROP TABLE fallback_passwords;
DROP INDEX fallback_passwords_by_login;
DROP TABLE invites;
DROP INDEX invite_active_ids;
DROP INDEX invite_active_tokens;
DROP INDEX invite_inactive;
DROP TABLE aliases;
DROP INDEX aliases_ids;
DROP INDEX aliases_names;
DROP TABLE denied_keys;
DROP INDEX denied_keys_by_pubkey;

View File

@ -1,9 +0,0 @@
-- +migrate Up
CREATE TABLE auth_fallback (
id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
name text NOT NULL UNIQUE,
password_hash blob not null
);
-- +migrate Down
DROP TABLE auth_fallback;

View File

@ -1,8 +0,0 @@
-- +migrate Up
CREATE TABLE allow_list (
id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
pub_key text NOT NULL UNIQUE
);
-- +migrate Down
DROP TABLE allow_list;

View File

@ -1,22 +0,0 @@
-- +migrate Up
CREATE TABLE invites (
id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
token text UNIQUE NOT NULL,
created_by integer NOT NULL,
alias_suggestion text NOT NULL DEFAULT "", -- optional
active boolean NOT NULL DEFAULT true,
-- TODO: replace auth_fallback with a user table once we do "sign in with ssb"
FOREIGN KEY ( created_by ) REFERENCES auth_fallback( "id" )
);
CREATE INDEX invite_active_ids ON invites(id) WHERE active=true;
CREATE UNIQUE INDEX invite_active_tokens ON invites(token) WHERE active=true;
CREATE INDEX invite_inactive ON invites(active);
-- +migrate Down
DROP TABLE invites;
DROP INDEX invite_active_ids;
DROP INDEX invite_active_tokens;
DROP INDEX invite_inactive;

View File

@ -1,18 +0,0 @@
-- +migrate Up
CREATE TABLE aliases (
id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
name text UNIQUE NOT NULL,
user_id integer NOT NULL,
signature blob not null,
FOREIGN KEY ( user_id ) REFERENCES allow_list( "id" )
);
CREATE UNIQUE INDEX aliases_ids ON aliases(id);
CREATE UNIQUE INDEX aliases_names ON aliases(name);
-- +migrate Down
DROP TABLE aliases;
DROP INDEX aliases_ids;
DROP INDEX aliases_names;

View File

@ -1,10 +0,0 @@
-- +migrate Up
ALTER TABLE invites ADD COLUMN created_at datetime NOT NULL DEFAULT 0;
-- because of the restrictions in 4. https://www.sqlite.org/lang_altertable.html
-- the actual default should be date('now') but can't be.
-- this needs to be fixed once we merge the migrations into a signle schema prior to the next point release.
-- at which point we dont need to insert the current time into the db from the application anymore.
UPDATE invites set created_at=date('now');
-- +migrate Down
ALTER TABLE invites DROP COLUMN created_at;

View File

@ -24,7 +24,7 @@ import (
type Alias struct { type Alias struct {
ID int64 `boil:"id" json:"id" toml:"id" yaml:"id"` ID int64 `boil:"id" json:"id" toml:"id" yaml:"id"`
Name string `boil:"name" json:"name" toml:"name" yaml:"name"` Name string `boil:"name" json:"name" toml:"name" yaml:"name"`
UserID int64 `boil:"user_id" json:"user_id" toml:"user_id" yaml:"user_id"` MemberID int64 `boil:"member_id" json:"member_id" toml:"member_id" yaml:"member_id"`
Signature []byte `boil:"signature" json:"signature" toml:"signature" yaml:"signature"` Signature []byte `boil:"signature" json:"signature" toml:"signature" yaml:"signature"`
R *aliasR `boil:"-" json:"-" toml:"-" yaml:"-"` R *aliasR `boil:"-" json:"-" toml:"-" yaml:"-"`
@ -34,12 +34,12 @@ type Alias struct {
var AliasColumns = struct { var AliasColumns = struct {
ID string ID string
Name string Name string
UserID string MemberID string
Signature string Signature string
}{ }{
ID: "id", ID: "id",
Name: "name", Name: "name",
UserID: "user_id", MemberID: "member_id",
Signature: "signature", Signature: "signature",
} }
@ -103,25 +103,25 @@ func (w whereHelper__byte) GTE(x []byte) qm.QueryMod { return qmhelper.Where(w.f
var AliasWhere = struct { var AliasWhere = struct {
ID whereHelperint64 ID whereHelperint64
Name whereHelperstring Name whereHelperstring
UserID whereHelperint64 MemberID whereHelperint64
Signature whereHelper__byte Signature whereHelper__byte
}{ }{
ID: whereHelperint64{field: "\"aliases\".\"id\""}, ID: whereHelperint64{field: "\"aliases\".\"id\""},
Name: whereHelperstring{field: "\"aliases\".\"name\""}, Name: whereHelperstring{field: "\"aliases\".\"name\""},
UserID: whereHelperint64{field: "\"aliases\".\"user_id\""}, MemberID: whereHelperint64{field: "\"aliases\".\"member_id\""},
Signature: whereHelper__byte{field: "\"aliases\".\"signature\""}, Signature: whereHelper__byte{field: "\"aliases\".\"signature\""},
} }
// AliasRels is where relationship names are stored. // AliasRels is where relationship names are stored.
var AliasRels = struct { var AliasRels = struct {
User string Member string
}{ }{
User: "User", Member: "Member",
} }
// aliasR is where relationships are stored. // aliasR is where relationships are stored.
type aliasR struct { type aliasR struct {
User *AllowList `boil:"User" json:"User" toml:"User" yaml:"User"` Member *Member `boil:"Member" json:"Member" toml:"Member" yaml:"Member"`
} }
// NewStruct creates a new relationship struct // NewStruct creates a new relationship struct
@ -133,9 +133,9 @@ func (*aliasR) NewStruct() *aliasR {
type aliasL struct{} type aliasL struct{}
var ( var (
aliasAllColumns = []string{"id", "name", "user_id", "signature"} aliasAllColumns = []string{"id", "name", "member_id", "signature"}
aliasColumnsWithoutDefault = []string{} aliasColumnsWithoutDefault = []string{}
aliasColumnsWithDefault = []string{"id", "name", "user_id", "signature"} aliasColumnsWithDefault = []string{"id", "name", "member_id", "signature"}
aliasPrimaryKeyColumns = []string{"id"} aliasPrimaryKeyColumns = []string{"id"}
) )
@ -414,23 +414,23 @@ func (q aliasQuery) Exists(ctx context.Context, exec boil.ContextExecutor) (bool
return count > 0, nil return count > 0, nil
} }
// User pointed to by the foreign key. // Member pointed to by the foreign key.
func (o *Alias) User(mods ...qm.QueryMod) allowListQuery { func (o *Alias) Member(mods ...qm.QueryMod) memberQuery {
queryMods := []qm.QueryMod{ queryMods := []qm.QueryMod{
qm.Where("\"id\" = ?", o.UserID), qm.Where("\"id\" = ?", o.MemberID),
} }
queryMods = append(queryMods, mods...) queryMods = append(queryMods, mods...)
query := AllowLists(queryMods...) query := Members(queryMods...)
queries.SetFrom(query.Query, "\"allow_list\"") queries.SetFrom(query.Query, "\"members\"")
return query return query
} }
// LoadUser allows an eager lookup of values, cached into the // LoadMember allows an eager lookup of values, cached into the
// loaded structs of the objects. This is for an N-1 relationship. // loaded structs of the objects. This is for an N-1 relationship.
func (aliasL) LoadUser(ctx context.Context, e boil.ContextExecutor, singular bool, maybeAlias interface{}, mods queries.Applicator) error { func (aliasL) LoadMember(ctx context.Context, e boil.ContextExecutor, singular bool, maybeAlias interface{}, mods queries.Applicator) error {
var slice []*Alias var slice []*Alias
var object *Alias var object *Alias
@ -445,7 +445,7 @@ func (aliasL) LoadUser(ctx context.Context, e boil.ContextExecutor, singular boo
if object.R == nil { if object.R == nil {
object.R = &aliasR{} object.R = &aliasR{}
} }
args = append(args, object.UserID) args = append(args, object.MemberID)
} else { } else {
Outer: Outer:
@ -455,12 +455,12 @@ func (aliasL) LoadUser(ctx context.Context, e boil.ContextExecutor, singular boo
} }
for _, a := range args { for _, a := range args {
if a == obj.UserID { if a == obj.MemberID {
continue Outer continue Outer
} }
} }
args = append(args, obj.UserID) args = append(args, obj.MemberID)
} }
} }
@ -470,8 +470,8 @@ func (aliasL) LoadUser(ctx context.Context, e boil.ContextExecutor, singular boo
} }
query := NewQuery( query := NewQuery(
qm.From(`allow_list`), qm.From(`members`),
qm.WhereIn(`allow_list.id in ?`, args...), qm.WhereIn(`members.id in ?`, args...),
) )
if mods != nil { if mods != nil {
mods.Apply(query) mods.Apply(query)
@ -479,19 +479,19 @@ func (aliasL) LoadUser(ctx context.Context, e boil.ContextExecutor, singular boo
results, err := query.QueryContext(ctx, e) results, err := query.QueryContext(ctx, e)
if err != nil { if err != nil {
return errors.Wrap(err, "failed to eager load AllowList") return errors.Wrap(err, "failed to eager load Member")
} }
var resultSlice []*AllowList var resultSlice []*Member
if err = queries.Bind(results, &resultSlice); err != nil { if err = queries.Bind(results, &resultSlice); err != nil {
return errors.Wrap(err, "failed to bind eager loaded slice AllowList") return errors.Wrap(err, "failed to bind eager loaded slice Member")
} }
if err = results.Close(); err != nil { if err = results.Close(); err != nil {
return errors.Wrap(err, "failed to close results of eager load for allow_list") return errors.Wrap(err, "failed to close results of eager load for members")
} }
if err = results.Err(); err != nil { if err = results.Err(); err != nil {
return errors.Wrap(err, "error occurred during iteration of eager loaded relations for allow_list") return errors.Wrap(err, "error occurred during iteration of eager loaded relations for members")
} }
if len(aliasAfterSelectHooks) != 0 { if len(aliasAfterSelectHooks) != 0 {
@ -508,22 +508,22 @@ func (aliasL) LoadUser(ctx context.Context, e boil.ContextExecutor, singular boo
if singular { if singular {
foreign := resultSlice[0] foreign := resultSlice[0]
object.R.User = foreign object.R.Member = foreign
if foreign.R == nil { if foreign.R == nil {
foreign.R = &allowListR{} foreign.R = &memberR{}
} }
foreign.R.UserAliases = append(foreign.R.UserAliases, object) foreign.R.Aliases = append(foreign.R.Aliases, object)
return nil return nil
} }
for _, local := range slice { for _, local := range slice {
for _, foreign := range resultSlice { for _, foreign := range resultSlice {
if local.UserID == foreign.ID { if local.MemberID == foreign.ID {
local.R.User = foreign local.R.Member = foreign
if foreign.R == nil { if foreign.R == nil {
foreign.R = &allowListR{} foreign.R = &memberR{}
} }
foreign.R.UserAliases = append(foreign.R.UserAliases, local) foreign.R.Aliases = append(foreign.R.Aliases, local)
break break
} }
} }
@ -532,10 +532,10 @@ func (aliasL) LoadUser(ctx context.Context, e boil.ContextExecutor, singular boo
return nil return nil
} }
// SetUser of the alias to the related item. // SetMember of the alias to the related item.
// Sets o.R.User to related. // Sets o.R.Member to related.
// Adds o to related.R.UserAliases. // Adds o to related.R.Aliases.
func (o *Alias) SetUser(ctx context.Context, exec boil.ContextExecutor, insert bool, related *AllowList) error { func (o *Alias) SetMember(ctx context.Context, exec boil.ContextExecutor, insert bool, related *Member) error {
var err error var err error
if insert { if insert {
if err = related.Insert(ctx, exec, boil.Infer()); err != nil { if err = related.Insert(ctx, exec, boil.Infer()); err != nil {
@ -545,7 +545,7 @@ func (o *Alias) SetUser(ctx context.Context, exec boil.ContextExecutor, insert b
updateQuery := fmt.Sprintf( updateQuery := fmt.Sprintf(
"UPDATE \"aliases\" SET %s WHERE %s", "UPDATE \"aliases\" SET %s WHERE %s",
strmangle.SetParamNames("\"", "\"", 0, []string{"user_id"}), strmangle.SetParamNames("\"", "\"", 0, []string{"member_id"}),
strmangle.WhereClause("\"", "\"", 0, aliasPrimaryKeyColumns), strmangle.WhereClause("\"", "\"", 0, aliasPrimaryKeyColumns),
) )
values := []interface{}{related.ID, o.ID} values := []interface{}{related.ID, o.ID}
@ -559,21 +559,21 @@ func (o *Alias) SetUser(ctx context.Context, exec boil.ContextExecutor, insert b
return errors.Wrap(err, "failed to update local table") return errors.Wrap(err, "failed to update local table")
} }
o.UserID = related.ID o.MemberID = related.ID
if o.R == nil { if o.R == nil {
o.R = &aliasR{ o.R = &aliasR{
User: related, Member: related,
} }
} else { } else {
o.R.User = related o.R.Member = related
} }
if related.R == nil { if related.R == nil {
related.R = &allowListR{ related.R = &memberR{
UserAliases: AliasSlice{o}, Aliases: AliasSlice{o},
} }
} else { } else {
related.R.UserAliases = append(related.R.UserAliases, o) related.R.Aliases = append(related.R.Aliases, o)
} }
return nil return nil

View File

@ -1,977 +0,0 @@
// Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT.
// This file is meant to be re-generated in place and/or deleted at any time.
package models
import (
"context"
"database/sql"
"fmt"
"reflect"
"strings"
"sync"
"time"
"github.com/friendsofgo/errors"
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb"
"github.com/volatiletech/sqlboiler/v4/boil"
"github.com/volatiletech/sqlboiler/v4/queries"
"github.com/volatiletech/sqlboiler/v4/queries/qm"
"github.com/volatiletech/sqlboiler/v4/queries/qmhelper"
"github.com/volatiletech/strmangle"
)
// AllowList is an object representing the database table.
type AllowList struct {
ID int64 `boil:"id" json:"id" toml:"id" yaml:"id"`
PubKey roomdb.DBFeedRef `boil:"pub_key" json:"pub_key" toml:"pub_key" yaml:"pub_key"`
R *allowListR `boil:"-" json:"-" toml:"-" yaml:"-"`
L allowListL `boil:"-" json:"-" toml:"-" yaml:"-"`
}
var AllowListColumns = struct {
ID string
PubKey string
}{
ID: "id",
PubKey: "pub_key",
}
// Generated where
type whereHelperroomdb_DBFeedRef struct{ field string }
func (w whereHelperroomdb_DBFeedRef) EQ(x roomdb.DBFeedRef) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.EQ, x)
}
func (w whereHelperroomdb_DBFeedRef) NEQ(x roomdb.DBFeedRef) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.NEQ, x)
}
func (w whereHelperroomdb_DBFeedRef) LT(x roomdb.DBFeedRef) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.LT, x)
}
func (w whereHelperroomdb_DBFeedRef) LTE(x roomdb.DBFeedRef) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.LTE, x)
}
func (w whereHelperroomdb_DBFeedRef) GT(x roomdb.DBFeedRef) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.GT, x)
}
func (w whereHelperroomdb_DBFeedRef) GTE(x roomdb.DBFeedRef) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.GTE, x)
}
var AllowListWhere = struct {
ID whereHelperint64
PubKey whereHelperroomdb_DBFeedRef
}{
ID: whereHelperint64{field: "\"allow_list\".\"id\""},
PubKey: whereHelperroomdb_DBFeedRef{field: "\"allow_list\".\"pub_key\""},
}
// AllowListRels is where relationship names are stored.
var AllowListRels = struct {
UserAliases string
}{
UserAliases: "UserAliases",
}
// allowListR is where relationships are stored.
type allowListR struct {
UserAliases AliasSlice `boil:"UserAliases" json:"UserAliases" toml:"UserAliases" yaml:"UserAliases"`
}
// NewStruct creates a new relationship struct
func (*allowListR) NewStruct() *allowListR {
return &allowListR{}
}
// allowListL is where Load methods for each relationship are stored.
type allowListL struct{}
var (
allowListAllColumns = []string{"id", "pub_key"}
allowListColumnsWithoutDefault = []string{}
allowListColumnsWithDefault = []string{"id", "pub_key"}
allowListPrimaryKeyColumns = []string{"id"}
)
type (
// AllowListSlice is an alias for a slice of pointers to AllowList.
// This should generally be used opposed to []AllowList.
AllowListSlice []*AllowList
// AllowListHook is the signature for custom AllowList hook methods
AllowListHook func(context.Context, boil.ContextExecutor, *AllowList) error
allowListQuery struct {
*queries.Query
}
)
// Cache for insert, update and upsert
var (
allowListType = reflect.TypeOf(&AllowList{})
allowListMapping = queries.MakeStructMapping(allowListType)
allowListPrimaryKeyMapping, _ = queries.BindMapping(allowListType, allowListMapping, allowListPrimaryKeyColumns)
allowListInsertCacheMut sync.RWMutex
allowListInsertCache = make(map[string]insertCache)
allowListUpdateCacheMut sync.RWMutex
allowListUpdateCache = make(map[string]updateCache)
allowListUpsertCacheMut sync.RWMutex
allowListUpsertCache = make(map[string]insertCache)
)
var (
// Force time package dependency for automated UpdatedAt/CreatedAt.
_ = time.Second
// Force qmhelper dependency for where clause generation (which doesn't
// always happen)
_ = qmhelper.Where
)
var allowListBeforeInsertHooks []AllowListHook
var allowListBeforeUpdateHooks []AllowListHook
var allowListBeforeDeleteHooks []AllowListHook
var allowListBeforeUpsertHooks []AllowListHook
var allowListAfterInsertHooks []AllowListHook
var allowListAfterSelectHooks []AllowListHook
var allowListAfterUpdateHooks []AllowListHook
var allowListAfterDeleteHooks []AllowListHook
var allowListAfterUpsertHooks []AllowListHook
// doBeforeInsertHooks executes all "before insert" hooks.
func (o *AllowList) doBeforeInsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range allowListBeforeInsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doBeforeUpdateHooks executes all "before Update" hooks.
func (o *AllowList) doBeforeUpdateHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range allowListBeforeUpdateHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doBeforeDeleteHooks executes all "before Delete" hooks.
func (o *AllowList) doBeforeDeleteHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range allowListBeforeDeleteHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doBeforeUpsertHooks executes all "before Upsert" hooks.
func (o *AllowList) doBeforeUpsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range allowListBeforeUpsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterInsertHooks executes all "after Insert" hooks.
func (o *AllowList) doAfterInsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range allowListAfterInsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterSelectHooks executes all "after Select" hooks.
func (o *AllowList) doAfterSelectHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range allowListAfterSelectHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterUpdateHooks executes all "after Update" hooks.
func (o *AllowList) doAfterUpdateHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range allowListAfterUpdateHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterDeleteHooks executes all "after Delete" hooks.
func (o *AllowList) doAfterDeleteHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range allowListAfterDeleteHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterUpsertHooks executes all "after Upsert" hooks.
func (o *AllowList) doAfterUpsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range allowListAfterUpsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// AddAllowListHook registers your hook function for all future operations.
func AddAllowListHook(hookPoint boil.HookPoint, allowListHook AllowListHook) {
switch hookPoint {
case boil.BeforeInsertHook:
allowListBeforeInsertHooks = append(allowListBeforeInsertHooks, allowListHook)
case boil.BeforeUpdateHook:
allowListBeforeUpdateHooks = append(allowListBeforeUpdateHooks, allowListHook)
case boil.BeforeDeleteHook:
allowListBeforeDeleteHooks = append(allowListBeforeDeleteHooks, allowListHook)
case boil.BeforeUpsertHook:
allowListBeforeUpsertHooks = append(allowListBeforeUpsertHooks, allowListHook)
case boil.AfterInsertHook:
allowListAfterInsertHooks = append(allowListAfterInsertHooks, allowListHook)
case boil.AfterSelectHook:
allowListAfterSelectHooks = append(allowListAfterSelectHooks, allowListHook)
case boil.AfterUpdateHook:
allowListAfterUpdateHooks = append(allowListAfterUpdateHooks, allowListHook)
case boil.AfterDeleteHook:
allowListAfterDeleteHooks = append(allowListAfterDeleteHooks, allowListHook)
case boil.AfterUpsertHook:
allowListAfterUpsertHooks = append(allowListAfterUpsertHooks, allowListHook)
}
}
// One returns a single allowList record from the query.
func (q allowListQuery) One(ctx context.Context, exec boil.ContextExecutor) (*AllowList, error) {
o := &AllowList{}
queries.SetLimit(q.Query, 1)
err := q.Bind(ctx, exec, o)
if err != nil {
if errors.Cause(err) == sql.ErrNoRows {
return nil, sql.ErrNoRows
}
return nil, errors.Wrap(err, "models: failed to execute a one query for allow_list")
}
if err := o.doAfterSelectHooks(ctx, exec); err != nil {
return o, err
}
return o, nil
}
// All returns all AllowList records from the query.
func (q allowListQuery) All(ctx context.Context, exec boil.ContextExecutor) (AllowListSlice, error) {
var o []*AllowList
err := q.Bind(ctx, exec, &o)
if err != nil {
return nil, errors.Wrap(err, "models: failed to assign all query results to AllowList slice")
}
if len(allowListAfterSelectHooks) != 0 {
for _, obj := range o {
if err := obj.doAfterSelectHooks(ctx, exec); err != nil {
return o, err
}
}
}
return o, nil
}
// Count returns the count of all AllowList records in the query.
func (q allowListQuery) Count(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
var count int64
queries.SetSelect(q.Query, nil)
queries.SetCount(q.Query)
err := q.Query.QueryRowContext(ctx, exec).Scan(&count)
if err != nil {
return 0, errors.Wrap(err, "models: failed to count allow_list rows")
}
return count, nil
}
// Exists checks if the row exists in the table.
func (q allowListQuery) Exists(ctx context.Context, exec boil.ContextExecutor) (bool, error) {
var count int64
queries.SetSelect(q.Query, nil)
queries.SetCount(q.Query)
queries.SetLimit(q.Query, 1)
err := q.Query.QueryRowContext(ctx, exec).Scan(&count)
if err != nil {
return false, errors.Wrap(err, "models: failed to check if allow_list exists")
}
return count > 0, nil
}
// UserAliases retrieves all the alias's Aliases with an executor via user_id column.
func (o *AllowList) UserAliases(mods ...qm.QueryMod) aliasQuery {
var queryMods []qm.QueryMod
if len(mods) != 0 {
queryMods = append(queryMods, mods...)
}
queryMods = append(queryMods,
qm.Where("\"aliases\".\"user_id\"=?", o.ID),
)
query := Aliases(queryMods...)
queries.SetFrom(query.Query, "\"aliases\"")
if len(queries.GetSelect(query.Query)) == 0 {
queries.SetSelect(query.Query, []string{"\"aliases\".*"})
}
return query
}
// LoadUserAliases allows an eager lookup of values, cached into the
// loaded structs of the objects. This is for a 1-M or N-M relationship.
func (allowListL) LoadUserAliases(ctx context.Context, e boil.ContextExecutor, singular bool, maybeAllowList interface{}, mods queries.Applicator) error {
var slice []*AllowList
var object *AllowList
if singular {
object = maybeAllowList.(*AllowList)
} else {
slice = *maybeAllowList.(*[]*AllowList)
}
args := make([]interface{}, 0, 1)
if singular {
if object.R == nil {
object.R = &allowListR{}
}
args = append(args, object.ID)
} else {
Outer:
for _, obj := range slice {
if obj.R == nil {
obj.R = &allowListR{}
}
for _, a := range args {
if a == obj.ID {
continue Outer
}
}
args = append(args, obj.ID)
}
}
if len(args) == 0 {
return nil
}
query := NewQuery(
qm.From(`aliases`),
qm.WhereIn(`aliases.user_id in ?`, args...),
)
if mods != nil {
mods.Apply(query)
}
results, err := query.QueryContext(ctx, e)
if err != nil {
return errors.Wrap(err, "failed to eager load aliases")
}
var resultSlice []*Alias
if err = queries.Bind(results, &resultSlice); err != nil {
return errors.Wrap(err, "failed to bind eager loaded slice aliases")
}
if err = results.Close(); err != nil {
return errors.Wrap(err, "failed to close results in eager load on aliases")
}
if err = results.Err(); err != nil {
return errors.Wrap(err, "error occurred during iteration of eager loaded relations for aliases")
}
if len(aliasAfterSelectHooks) != 0 {
for _, obj := range resultSlice {
if err := obj.doAfterSelectHooks(ctx, e); err != nil {
return err
}
}
}
if singular {
object.R.UserAliases = resultSlice
for _, foreign := range resultSlice {
if foreign.R == nil {
foreign.R = &aliasR{}
}
foreign.R.User = object
}
return nil
}
for _, foreign := range resultSlice {
for _, local := range slice {
if local.ID == foreign.UserID {
local.R.UserAliases = append(local.R.UserAliases, foreign)
if foreign.R == nil {
foreign.R = &aliasR{}
}
foreign.R.User = local
break
}
}
}
return nil
}
// AddUserAliases adds the given related objects to the existing relationships
// of the allow_list, optionally inserting them as new records.
// Appends related to o.R.UserAliases.
// Sets related.R.User appropriately.
func (o *AllowList) AddUserAliases(ctx context.Context, exec boil.ContextExecutor, insert bool, related ...*Alias) error {
var err error
for _, rel := range related {
if insert {
rel.UserID = o.ID
if err = rel.Insert(ctx, exec, boil.Infer()); err != nil {
return errors.Wrap(err, "failed to insert into foreign table")
}
} else {
updateQuery := fmt.Sprintf(
"UPDATE \"aliases\" SET %s WHERE %s",
strmangle.SetParamNames("\"", "\"", 0, []string{"user_id"}),
strmangle.WhereClause("\"", "\"", 0, aliasPrimaryKeyColumns),
)
values := []interface{}{o.ID, rel.ID}
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, updateQuery)
fmt.Fprintln(writer, values)
}
if _, err = exec.ExecContext(ctx, updateQuery, values...); err != nil {
return errors.Wrap(err, "failed to update foreign table")
}
rel.UserID = o.ID
}
}
if o.R == nil {
o.R = &allowListR{
UserAliases: related,
}
} else {
o.R.UserAliases = append(o.R.UserAliases, related...)
}
for _, rel := range related {
if rel.R == nil {
rel.R = &aliasR{
User: o,
}
} else {
rel.R.User = o
}
}
return nil
}
// AllowLists retrieves all the records using an executor.
func AllowLists(mods ...qm.QueryMod) allowListQuery {
mods = append(mods, qm.From("\"allow_list\""))
return allowListQuery{NewQuery(mods...)}
}
// FindAllowList retrieves a single record by ID with an executor.
// If selectCols is empty Find will return all columns.
func FindAllowList(ctx context.Context, exec boil.ContextExecutor, iD int64, selectCols ...string) (*AllowList, error) {
allowListObj := &AllowList{}
sel := "*"
if len(selectCols) > 0 {
sel = strings.Join(strmangle.IdentQuoteSlice(dialect.LQ, dialect.RQ, selectCols), ",")
}
query := fmt.Sprintf(
"select %s from \"allow_list\" where \"id\"=?", sel,
)
q := queries.Raw(query, iD)
err := q.Bind(ctx, exec, allowListObj)
if err != nil {
if errors.Cause(err) == sql.ErrNoRows {
return nil, sql.ErrNoRows
}
return nil, errors.Wrap(err, "models: unable to select from allow_list")
}
return allowListObj, nil
}
// Insert a single record using an executor.
// See boil.Columns.InsertColumnSet documentation to understand column list inference for inserts.
func (o *AllowList) Insert(ctx context.Context, exec boil.ContextExecutor, columns boil.Columns) error {
if o == nil {
return errors.New("models: no allow_list provided for insertion")
}
var err error
if err := o.doBeforeInsertHooks(ctx, exec); err != nil {
return err
}
nzDefaults := queries.NonZeroDefaultSet(allowListColumnsWithDefault, o)
key := makeCacheKey(columns, nzDefaults)
allowListInsertCacheMut.RLock()
cache, cached := allowListInsertCache[key]
allowListInsertCacheMut.RUnlock()
if !cached {
wl, returnColumns := columns.InsertColumnSet(
allowListAllColumns,
allowListColumnsWithDefault,
allowListColumnsWithoutDefault,
nzDefaults,
)
cache.valueMapping, err = queries.BindMapping(allowListType, allowListMapping, wl)
if err != nil {
return err
}
cache.retMapping, err = queries.BindMapping(allowListType, allowListMapping, returnColumns)
if err != nil {
return err
}
if len(wl) != 0 {
cache.query = fmt.Sprintf("INSERT INTO \"allow_list\" (\"%s\") %%sVALUES (%s)%%s", strings.Join(wl, "\",\""), strmangle.Placeholders(dialect.UseIndexPlaceholders, len(wl), 1, 1))
} else {
cache.query = "INSERT INTO \"allow_list\" %sDEFAULT VALUES%s"
}
var queryOutput, queryReturning string
if len(cache.retMapping) != 0 {
cache.retQuery = fmt.Sprintf("SELECT \"%s\" FROM \"allow_list\" WHERE %s", strings.Join(returnColumns, "\",\""), strmangle.WhereClause("\"", "\"", 0, allowListPrimaryKeyColumns))
}
cache.query = fmt.Sprintf(cache.query, queryOutput, queryReturning)
}
value := reflect.Indirect(reflect.ValueOf(o))
vals := queries.ValuesFromMapping(value, cache.valueMapping)
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, cache.query)
fmt.Fprintln(writer, vals)
}
result, err := exec.ExecContext(ctx, cache.query, vals...)
if err != nil {
return errors.Wrap(err, "models: unable to insert into allow_list")
}
var lastID int64
var identifierCols []interface{}
if len(cache.retMapping) == 0 {
goto CacheNoHooks
}
lastID, err = result.LastInsertId()
if err != nil {
return ErrSyncFail
}
o.ID = int64(lastID)
if lastID != 0 && len(cache.retMapping) == 1 && cache.retMapping[0] == allowListMapping["id"] {
goto CacheNoHooks
}
identifierCols = []interface{}{
o.ID,
}
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, cache.retQuery)
fmt.Fprintln(writer, identifierCols...)
}
err = exec.QueryRowContext(ctx, cache.retQuery, identifierCols...).Scan(queries.PtrsFromMapping(value, cache.retMapping)...)
if err != nil {
return errors.Wrap(err, "models: unable to populate default values for allow_list")
}
CacheNoHooks:
if !cached {
allowListInsertCacheMut.Lock()
allowListInsertCache[key] = cache
allowListInsertCacheMut.Unlock()
}
return o.doAfterInsertHooks(ctx, exec)
}
// Update uses an executor to update the AllowList.
// See boil.Columns.UpdateColumnSet documentation to understand column list inference for updates.
// Update does not automatically update the record in case of default values. Use .Reload() to refresh the records.
func (o *AllowList) Update(ctx context.Context, exec boil.ContextExecutor, columns boil.Columns) (int64, error) {
var err error
if err = o.doBeforeUpdateHooks(ctx, exec); err != nil {
return 0, err
}
key := makeCacheKey(columns, nil)
allowListUpdateCacheMut.RLock()
cache, cached := allowListUpdateCache[key]
allowListUpdateCacheMut.RUnlock()
if !cached {
wl := columns.UpdateColumnSet(
allowListAllColumns,
allowListPrimaryKeyColumns,
)
if !columns.IsWhitelist() {
wl = strmangle.SetComplement(wl, []string{"created_at"})
}
if len(wl) == 0 {
return 0, errors.New("models: unable to update allow_list, could not build whitelist")
}
cache.query = fmt.Sprintf("UPDATE \"allow_list\" SET %s WHERE %s",
strmangle.SetParamNames("\"", "\"", 0, wl),
strmangle.WhereClause("\"", "\"", 0, allowListPrimaryKeyColumns),
)
cache.valueMapping, err = queries.BindMapping(allowListType, allowListMapping, append(wl, allowListPrimaryKeyColumns...))
if err != nil {
return 0, err
}
}
values := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(o)), cache.valueMapping)
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, cache.query)
fmt.Fprintln(writer, values)
}
var result sql.Result
result, err = exec.ExecContext(ctx, cache.query, values...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to update allow_list row")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by update for allow_list")
}
if !cached {
allowListUpdateCacheMut.Lock()
allowListUpdateCache[key] = cache
allowListUpdateCacheMut.Unlock()
}
return rowsAff, o.doAfterUpdateHooks(ctx, exec)
}
// UpdateAll updates all rows with the specified column values.
func (q allowListQuery) UpdateAll(ctx context.Context, exec boil.ContextExecutor, cols M) (int64, error) {
queries.SetUpdate(q.Query, cols)
result, err := q.Query.ExecContext(ctx, exec)
if err != nil {
return 0, errors.Wrap(err, "models: unable to update all for allow_list")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: unable to retrieve rows affected for allow_list")
}
return rowsAff, nil
}
// UpdateAll updates all rows with the specified column values, using an executor.
func (o AllowListSlice) UpdateAll(ctx context.Context, exec boil.ContextExecutor, cols M) (int64, error) {
ln := int64(len(o))
if ln == 0 {
return 0, nil
}
if len(cols) == 0 {
return 0, errors.New("models: update all requires at least one column argument")
}
colNames := make([]string, len(cols))
args := make([]interface{}, len(cols))
i := 0
for name, value := range cols {
colNames[i] = name
args[i] = value
i++
}
// Append all of the primary key values for each column
for _, obj := range o {
pkeyArgs := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(obj)), allowListPrimaryKeyMapping)
args = append(args, pkeyArgs...)
}
sql := fmt.Sprintf("UPDATE \"allow_list\" SET %s WHERE %s",
strmangle.SetParamNames("\"", "\"", 0, colNames),
strmangle.WhereClauseRepeated(string(dialect.LQ), string(dialect.RQ), 0, allowListPrimaryKeyColumns, len(o)))
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, args...)
}
result, err := exec.ExecContext(ctx, sql, args...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to update all in allowList slice")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: unable to retrieve rows affected all in update all allowList")
}
return rowsAff, nil
}
// Delete deletes a single AllowList record with an executor.
// Delete will match against the primary key column to find the record to delete.
func (o *AllowList) Delete(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
if o == nil {
return 0, errors.New("models: no AllowList provided for delete")
}
if err := o.doBeforeDeleteHooks(ctx, exec); err != nil {
return 0, err
}
args := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(o)), allowListPrimaryKeyMapping)
sql := "DELETE FROM \"allow_list\" WHERE \"id\"=?"
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, args...)
}
result, err := exec.ExecContext(ctx, sql, args...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to delete from allow_list")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by delete for allow_list")
}
if err := o.doAfterDeleteHooks(ctx, exec); err != nil {
return 0, err
}
return rowsAff, nil
}
// DeleteAll deletes all matching rows.
func (q allowListQuery) DeleteAll(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
if q.Query == nil {
return 0, errors.New("models: no allowListQuery provided for delete all")
}
queries.SetDelete(q.Query)
result, err := q.Query.ExecContext(ctx, exec)
if err != nil {
return 0, errors.Wrap(err, "models: unable to delete all from allow_list")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by deleteall for allow_list")
}
return rowsAff, nil
}
// DeleteAll deletes all rows in the slice, using an executor.
func (o AllowListSlice) DeleteAll(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
if len(o) == 0 {
return 0, nil
}
if len(allowListBeforeDeleteHooks) != 0 {
for _, obj := range o {
if err := obj.doBeforeDeleteHooks(ctx, exec); err != nil {
return 0, err
}
}
}
var args []interface{}
for _, obj := range o {
pkeyArgs := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(obj)), allowListPrimaryKeyMapping)
args = append(args, pkeyArgs...)
}
sql := "DELETE FROM \"allow_list\" WHERE " +
strmangle.WhereClauseRepeated(string(dialect.LQ), string(dialect.RQ), 0, allowListPrimaryKeyColumns, len(o))
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, args)
}
result, err := exec.ExecContext(ctx, sql, args...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to delete all from allowList slice")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by deleteall for allow_list")
}
if len(allowListAfterDeleteHooks) != 0 {
for _, obj := range o {
if err := obj.doAfterDeleteHooks(ctx, exec); err != nil {
return 0, err
}
}
}
return rowsAff, nil
}
// Reload refetches the object from the database
// using the primary keys with an executor.
func (o *AllowList) Reload(ctx context.Context, exec boil.ContextExecutor) error {
ret, err := FindAllowList(ctx, exec, o.ID)
if err != nil {
return err
}
*o = *ret
return nil
}
// ReloadAll refetches every row with matching primary key column values
// and overwrites the original object slice with the newly updated slice.
func (o *AllowListSlice) ReloadAll(ctx context.Context, exec boil.ContextExecutor) error {
if o == nil || len(*o) == 0 {
return nil
}
slice := AllowListSlice{}
var args []interface{}
for _, obj := range *o {
pkeyArgs := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(obj)), allowListPrimaryKeyMapping)
args = append(args, pkeyArgs...)
}
sql := "SELECT \"allow_list\".* FROM \"allow_list\" WHERE " +
strmangle.WhereClauseRepeated(string(dialect.LQ), string(dialect.RQ), 0, allowListPrimaryKeyColumns, len(*o))
q := queries.Raw(sql, args...)
err := q.Bind(ctx, exec, &slice)
if err != nil {
return errors.Wrap(err, "models: unable to reload all in AllowListSlice")
}
*o = slice
return nil
}
// AllowListExists checks if the AllowList row exists.
func AllowListExists(ctx context.Context, exec boil.ContextExecutor, iD int64) (bool, error) {
var exists bool
sql := "select exists(select 1 from \"allow_list\" where \"id\"=? limit 1)"
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, iD)
}
row := exec.QueryRowContext(ctx, sql, iD)
err := row.Scan(&exists)
if err != nil {
return false, errors.Wrap(err, "models: unable to check if allow_list exists")
}
return exists, nil
}

View File

@ -1,960 +0,0 @@
// Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT.
// This file is meant to be re-generated in place and/or deleted at any time.
package models
import (
"context"
"database/sql"
"fmt"
"reflect"
"strings"
"sync"
"time"
"github.com/friendsofgo/errors"
"github.com/volatiletech/sqlboiler/v4/boil"
"github.com/volatiletech/sqlboiler/v4/queries"
"github.com/volatiletech/sqlboiler/v4/queries/qm"
"github.com/volatiletech/sqlboiler/v4/queries/qmhelper"
"github.com/volatiletech/strmangle"
)
// AuthFallback is an object representing the database table.
type AuthFallback struct {
ID int64 `boil:"id" json:"id" toml:"id" yaml:"id"`
Name string `boil:"name" json:"name" toml:"name" yaml:"name"`
PasswordHash []byte `boil:"password_hash" json:"password_hash" toml:"password_hash" yaml:"password_hash"`
R *authFallbackR `boil:"-" json:"-" toml:"-" yaml:"-"`
L authFallbackL `boil:"-" json:"-" toml:"-" yaml:"-"`
}
var AuthFallbackColumns = struct {
ID string
Name string
PasswordHash string
}{
ID: "id",
Name: "name",
PasswordHash: "password_hash",
}
// Generated where
var AuthFallbackWhere = struct {
ID whereHelperint64
Name whereHelperstring
PasswordHash whereHelper__byte
}{
ID: whereHelperint64{field: "\"auth_fallback\".\"id\""},
Name: whereHelperstring{field: "\"auth_fallback\".\"name\""},
PasswordHash: whereHelper__byte{field: "\"auth_fallback\".\"password_hash\""},
}
// AuthFallbackRels is where relationship names are stored.
var AuthFallbackRels = struct {
CreatedByInvites string
}{
CreatedByInvites: "CreatedByInvites",
}
// authFallbackR is where relationships are stored.
type authFallbackR struct {
CreatedByInvites InviteSlice `boil:"CreatedByInvites" json:"CreatedByInvites" toml:"CreatedByInvites" yaml:"CreatedByInvites"`
}
// NewStruct creates a new relationship struct
func (*authFallbackR) NewStruct() *authFallbackR {
return &authFallbackR{}
}
// authFallbackL is where Load methods for each relationship are stored.
type authFallbackL struct{}
var (
authFallbackAllColumns = []string{"id", "name", "password_hash"}
authFallbackColumnsWithoutDefault = []string{}
authFallbackColumnsWithDefault = []string{"id", "name", "password_hash"}
authFallbackPrimaryKeyColumns = []string{"id"}
)
type (
// AuthFallbackSlice is an alias for a slice of pointers to AuthFallback.
// This should generally be used opposed to []AuthFallback.
AuthFallbackSlice []*AuthFallback
// AuthFallbackHook is the signature for custom AuthFallback hook methods
AuthFallbackHook func(context.Context, boil.ContextExecutor, *AuthFallback) error
authFallbackQuery struct {
*queries.Query
}
)
// Cache for insert, update and upsert
var (
authFallbackType = reflect.TypeOf(&AuthFallback{})
authFallbackMapping = queries.MakeStructMapping(authFallbackType)
authFallbackPrimaryKeyMapping, _ = queries.BindMapping(authFallbackType, authFallbackMapping, authFallbackPrimaryKeyColumns)
authFallbackInsertCacheMut sync.RWMutex
authFallbackInsertCache = make(map[string]insertCache)
authFallbackUpdateCacheMut sync.RWMutex
authFallbackUpdateCache = make(map[string]updateCache)
authFallbackUpsertCacheMut sync.RWMutex
authFallbackUpsertCache = make(map[string]insertCache)
)
var (
// Force time package dependency for automated UpdatedAt/CreatedAt.
_ = time.Second
// Force qmhelper dependency for where clause generation (which doesn't
// always happen)
_ = qmhelper.Where
)
var authFallbackBeforeInsertHooks []AuthFallbackHook
var authFallbackBeforeUpdateHooks []AuthFallbackHook
var authFallbackBeforeDeleteHooks []AuthFallbackHook
var authFallbackBeforeUpsertHooks []AuthFallbackHook
var authFallbackAfterInsertHooks []AuthFallbackHook
var authFallbackAfterSelectHooks []AuthFallbackHook
var authFallbackAfterUpdateHooks []AuthFallbackHook
var authFallbackAfterDeleteHooks []AuthFallbackHook
var authFallbackAfterUpsertHooks []AuthFallbackHook
// doBeforeInsertHooks executes all "before insert" hooks.
func (o *AuthFallback) doBeforeInsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range authFallbackBeforeInsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doBeforeUpdateHooks executes all "before Update" hooks.
func (o *AuthFallback) doBeforeUpdateHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range authFallbackBeforeUpdateHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doBeforeDeleteHooks executes all "before Delete" hooks.
func (o *AuthFallback) doBeforeDeleteHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range authFallbackBeforeDeleteHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doBeforeUpsertHooks executes all "before Upsert" hooks.
func (o *AuthFallback) doBeforeUpsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range authFallbackBeforeUpsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterInsertHooks executes all "after Insert" hooks.
func (o *AuthFallback) doAfterInsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range authFallbackAfterInsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterSelectHooks executes all "after Select" hooks.
func (o *AuthFallback) doAfterSelectHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range authFallbackAfterSelectHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterUpdateHooks executes all "after Update" hooks.
func (o *AuthFallback) doAfterUpdateHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range authFallbackAfterUpdateHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterDeleteHooks executes all "after Delete" hooks.
func (o *AuthFallback) doAfterDeleteHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range authFallbackAfterDeleteHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterUpsertHooks executes all "after Upsert" hooks.
func (o *AuthFallback) doAfterUpsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range authFallbackAfterUpsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// AddAuthFallbackHook registers your hook function for all future operations.
func AddAuthFallbackHook(hookPoint boil.HookPoint, authFallbackHook AuthFallbackHook) {
switch hookPoint {
case boil.BeforeInsertHook:
authFallbackBeforeInsertHooks = append(authFallbackBeforeInsertHooks, authFallbackHook)
case boil.BeforeUpdateHook:
authFallbackBeforeUpdateHooks = append(authFallbackBeforeUpdateHooks, authFallbackHook)
case boil.BeforeDeleteHook:
authFallbackBeforeDeleteHooks = append(authFallbackBeforeDeleteHooks, authFallbackHook)
case boil.BeforeUpsertHook:
authFallbackBeforeUpsertHooks = append(authFallbackBeforeUpsertHooks, authFallbackHook)
case boil.AfterInsertHook:
authFallbackAfterInsertHooks = append(authFallbackAfterInsertHooks, authFallbackHook)
case boil.AfterSelectHook:
authFallbackAfterSelectHooks = append(authFallbackAfterSelectHooks, authFallbackHook)
case boil.AfterUpdateHook:
authFallbackAfterUpdateHooks = append(authFallbackAfterUpdateHooks, authFallbackHook)
case boil.AfterDeleteHook:
authFallbackAfterDeleteHooks = append(authFallbackAfterDeleteHooks, authFallbackHook)
case boil.AfterUpsertHook:
authFallbackAfterUpsertHooks = append(authFallbackAfterUpsertHooks, authFallbackHook)
}
}
// One returns a single authFallback record from the query.
func (q authFallbackQuery) One(ctx context.Context, exec boil.ContextExecutor) (*AuthFallback, error) {
o := &AuthFallback{}
queries.SetLimit(q.Query, 1)
err := q.Bind(ctx, exec, o)
if err != nil {
if errors.Cause(err) == sql.ErrNoRows {
return nil, sql.ErrNoRows
}
return nil, errors.Wrap(err, "models: failed to execute a one query for auth_fallback")
}
if err := o.doAfterSelectHooks(ctx, exec); err != nil {
return o, err
}
return o, nil
}
// All returns all AuthFallback records from the query.
func (q authFallbackQuery) All(ctx context.Context, exec boil.ContextExecutor) (AuthFallbackSlice, error) {
var o []*AuthFallback
err := q.Bind(ctx, exec, &o)
if err != nil {
return nil, errors.Wrap(err, "models: failed to assign all query results to AuthFallback slice")
}
if len(authFallbackAfterSelectHooks) != 0 {
for _, obj := range o {
if err := obj.doAfterSelectHooks(ctx, exec); err != nil {
return o, err
}
}
}
return o, nil
}
// Count returns the count of all AuthFallback records in the query.
func (q authFallbackQuery) Count(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
var count int64
queries.SetSelect(q.Query, nil)
queries.SetCount(q.Query)
err := q.Query.QueryRowContext(ctx, exec).Scan(&count)
if err != nil {
return 0, errors.Wrap(err, "models: failed to count auth_fallback rows")
}
return count, nil
}
// Exists checks if the row exists in the table.
func (q authFallbackQuery) Exists(ctx context.Context, exec boil.ContextExecutor) (bool, error) {
var count int64
queries.SetSelect(q.Query, nil)
queries.SetCount(q.Query)
queries.SetLimit(q.Query, 1)
err := q.Query.QueryRowContext(ctx, exec).Scan(&count)
if err != nil {
return false, errors.Wrap(err, "models: failed to check if auth_fallback exists")
}
return count > 0, nil
}
// CreatedByInvites retrieves all the invite's Invites with an executor via created_by column.
func (o *AuthFallback) CreatedByInvites(mods ...qm.QueryMod) inviteQuery {
var queryMods []qm.QueryMod
if len(mods) != 0 {
queryMods = append(queryMods, mods...)
}
queryMods = append(queryMods,
qm.Where("\"invites\".\"created_by\"=?", o.ID),
)
query := Invites(queryMods...)
queries.SetFrom(query.Query, "\"invites\"")
if len(queries.GetSelect(query.Query)) == 0 {
queries.SetSelect(query.Query, []string{"\"invites\".*"})
}
return query
}
// LoadCreatedByInvites allows an eager lookup of values, cached into the
// loaded structs of the objects. This is for a 1-M or N-M relationship.
func (authFallbackL) LoadCreatedByInvites(ctx context.Context, e boil.ContextExecutor, singular bool, maybeAuthFallback interface{}, mods queries.Applicator) error {
var slice []*AuthFallback
var object *AuthFallback
if singular {
object = maybeAuthFallback.(*AuthFallback)
} else {
slice = *maybeAuthFallback.(*[]*AuthFallback)
}
args := make([]interface{}, 0, 1)
if singular {
if object.R == nil {
object.R = &authFallbackR{}
}
args = append(args, object.ID)
} else {
Outer:
for _, obj := range slice {
if obj.R == nil {
obj.R = &authFallbackR{}
}
for _, a := range args {
if a == obj.ID {
continue Outer
}
}
args = append(args, obj.ID)
}
}
if len(args) == 0 {
return nil
}
query := NewQuery(
qm.From(`invites`),
qm.WhereIn(`invites.created_by in ?`, args...),
)
if mods != nil {
mods.Apply(query)
}
results, err := query.QueryContext(ctx, e)
if err != nil {
return errors.Wrap(err, "failed to eager load invites")
}
var resultSlice []*Invite
if err = queries.Bind(results, &resultSlice); err != nil {
return errors.Wrap(err, "failed to bind eager loaded slice invites")
}
if err = results.Close(); err != nil {
return errors.Wrap(err, "failed to close results in eager load on invites")
}
if err = results.Err(); err != nil {
return errors.Wrap(err, "error occurred during iteration of eager loaded relations for invites")
}
if len(inviteAfterSelectHooks) != 0 {
for _, obj := range resultSlice {
if err := obj.doAfterSelectHooks(ctx, e); err != nil {
return err
}
}
}
if singular {
object.R.CreatedByInvites = resultSlice
for _, foreign := range resultSlice {
if foreign.R == nil {
foreign.R = &inviteR{}
}
foreign.R.CreatedByAuthFallback = object
}
return nil
}
for _, foreign := range resultSlice {
for _, local := range slice {
if local.ID == foreign.CreatedBy {
local.R.CreatedByInvites = append(local.R.CreatedByInvites, foreign)
if foreign.R == nil {
foreign.R = &inviteR{}
}
foreign.R.CreatedByAuthFallback = local
break
}
}
}
return nil
}
// AddCreatedByInvites adds the given related objects to the existing relationships
// of the auth_fallback, optionally inserting them as new records.
// Appends related to o.R.CreatedByInvites.
// Sets related.R.CreatedByAuthFallback appropriately.
func (o *AuthFallback) AddCreatedByInvites(ctx context.Context, exec boil.ContextExecutor, insert bool, related ...*Invite) error {
var err error
for _, rel := range related {
if insert {
rel.CreatedBy = o.ID
if err = rel.Insert(ctx, exec, boil.Infer()); err != nil {
return errors.Wrap(err, "failed to insert into foreign table")
}
} else {
updateQuery := fmt.Sprintf(
"UPDATE \"invites\" SET %s WHERE %s",
strmangle.SetParamNames("\"", "\"", 0, []string{"created_by"}),
strmangle.WhereClause("\"", "\"", 0, invitePrimaryKeyColumns),
)
values := []interface{}{o.ID, rel.ID}
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, updateQuery)
fmt.Fprintln(writer, values)
}
if _, err = exec.ExecContext(ctx, updateQuery, values...); err != nil {
return errors.Wrap(err, "failed to update foreign table")
}
rel.CreatedBy = o.ID
}
}
if o.R == nil {
o.R = &authFallbackR{
CreatedByInvites: related,
}
} else {
o.R.CreatedByInvites = append(o.R.CreatedByInvites, related...)
}
for _, rel := range related {
if rel.R == nil {
rel.R = &inviteR{
CreatedByAuthFallback: o,
}
} else {
rel.R.CreatedByAuthFallback = o
}
}
return nil
}
// AuthFallbacks retrieves all the records using an executor.
func AuthFallbacks(mods ...qm.QueryMod) authFallbackQuery {
mods = append(mods, qm.From("\"auth_fallback\""))
return authFallbackQuery{NewQuery(mods...)}
}
// FindAuthFallback retrieves a single record by ID with an executor.
// If selectCols is empty Find will return all columns.
func FindAuthFallback(ctx context.Context, exec boil.ContextExecutor, iD int64, selectCols ...string) (*AuthFallback, error) {
authFallbackObj := &AuthFallback{}
sel := "*"
if len(selectCols) > 0 {
sel = strings.Join(strmangle.IdentQuoteSlice(dialect.LQ, dialect.RQ, selectCols), ",")
}
query := fmt.Sprintf(
"select %s from \"auth_fallback\" where \"id\"=?", sel,
)
q := queries.Raw(query, iD)
err := q.Bind(ctx, exec, authFallbackObj)
if err != nil {
if errors.Cause(err) == sql.ErrNoRows {
return nil, sql.ErrNoRows
}
return nil, errors.Wrap(err, "models: unable to select from auth_fallback")
}
return authFallbackObj, nil
}
// Insert a single record using an executor.
// See boil.Columns.InsertColumnSet documentation to understand column list inference for inserts.
func (o *AuthFallback) Insert(ctx context.Context, exec boil.ContextExecutor, columns boil.Columns) error {
if o == nil {
return errors.New("models: no auth_fallback provided for insertion")
}
var err error
if err := o.doBeforeInsertHooks(ctx, exec); err != nil {
return err
}
nzDefaults := queries.NonZeroDefaultSet(authFallbackColumnsWithDefault, o)
key := makeCacheKey(columns, nzDefaults)
authFallbackInsertCacheMut.RLock()
cache, cached := authFallbackInsertCache[key]
authFallbackInsertCacheMut.RUnlock()
if !cached {
wl, returnColumns := columns.InsertColumnSet(
authFallbackAllColumns,
authFallbackColumnsWithDefault,
authFallbackColumnsWithoutDefault,
nzDefaults,
)
cache.valueMapping, err = queries.BindMapping(authFallbackType, authFallbackMapping, wl)
if err != nil {
return err
}
cache.retMapping, err = queries.BindMapping(authFallbackType, authFallbackMapping, returnColumns)
if err != nil {
return err
}
if len(wl) != 0 {
cache.query = fmt.Sprintf("INSERT INTO \"auth_fallback\" (\"%s\") %%sVALUES (%s)%%s", strings.Join(wl, "\",\""), strmangle.Placeholders(dialect.UseIndexPlaceholders, len(wl), 1, 1))
} else {
cache.query = "INSERT INTO \"auth_fallback\" %sDEFAULT VALUES%s"
}
var queryOutput, queryReturning string
if len(cache.retMapping) != 0 {
cache.retQuery = fmt.Sprintf("SELECT \"%s\" FROM \"auth_fallback\" WHERE %s", strings.Join(returnColumns, "\",\""), strmangle.WhereClause("\"", "\"", 0, authFallbackPrimaryKeyColumns))
}
cache.query = fmt.Sprintf(cache.query, queryOutput, queryReturning)
}
value := reflect.Indirect(reflect.ValueOf(o))
vals := queries.ValuesFromMapping(value, cache.valueMapping)
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, cache.query)
fmt.Fprintln(writer, vals)
}
result, err := exec.ExecContext(ctx, cache.query, vals...)
if err != nil {
return errors.Wrap(err, "models: unable to insert into auth_fallback")
}
var lastID int64
var identifierCols []interface{}
if len(cache.retMapping) == 0 {
goto CacheNoHooks
}
lastID, err = result.LastInsertId()
if err != nil {
return ErrSyncFail
}
o.ID = int64(lastID)
if lastID != 0 && len(cache.retMapping) == 1 && cache.retMapping[0] == authFallbackMapping["id"] {
goto CacheNoHooks
}
identifierCols = []interface{}{
o.ID,
}
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, cache.retQuery)
fmt.Fprintln(writer, identifierCols...)
}
err = exec.QueryRowContext(ctx, cache.retQuery, identifierCols...).Scan(queries.PtrsFromMapping(value, cache.retMapping)...)
if err != nil {
return errors.Wrap(err, "models: unable to populate default values for auth_fallback")
}
CacheNoHooks:
if !cached {
authFallbackInsertCacheMut.Lock()
authFallbackInsertCache[key] = cache
authFallbackInsertCacheMut.Unlock()
}
return o.doAfterInsertHooks(ctx, exec)
}
// Update uses an executor to update the AuthFallback.
// See boil.Columns.UpdateColumnSet documentation to understand column list inference for updates.
// Update does not automatically update the record in case of default values. Use .Reload() to refresh the records.
func (o *AuthFallback) Update(ctx context.Context, exec boil.ContextExecutor, columns boil.Columns) (int64, error) {
var err error
if err = o.doBeforeUpdateHooks(ctx, exec); err != nil {
return 0, err
}
key := makeCacheKey(columns, nil)
authFallbackUpdateCacheMut.RLock()
cache, cached := authFallbackUpdateCache[key]
authFallbackUpdateCacheMut.RUnlock()
if !cached {
wl := columns.UpdateColumnSet(
authFallbackAllColumns,
authFallbackPrimaryKeyColumns,
)
if !columns.IsWhitelist() {
wl = strmangle.SetComplement(wl, []string{"created_at"})
}
if len(wl) == 0 {
return 0, errors.New("models: unable to update auth_fallback, could not build whitelist")
}
cache.query = fmt.Sprintf("UPDATE \"auth_fallback\" SET %s WHERE %s",
strmangle.SetParamNames("\"", "\"", 0, wl),
strmangle.WhereClause("\"", "\"", 0, authFallbackPrimaryKeyColumns),
)
cache.valueMapping, err = queries.BindMapping(authFallbackType, authFallbackMapping, append(wl, authFallbackPrimaryKeyColumns...))
if err != nil {
return 0, err
}
}
values := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(o)), cache.valueMapping)
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, cache.query)
fmt.Fprintln(writer, values)
}
var result sql.Result
result, err = exec.ExecContext(ctx, cache.query, values...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to update auth_fallback row")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by update for auth_fallback")
}
if !cached {
authFallbackUpdateCacheMut.Lock()
authFallbackUpdateCache[key] = cache
authFallbackUpdateCacheMut.Unlock()
}
return rowsAff, o.doAfterUpdateHooks(ctx, exec)
}
// UpdateAll updates all rows with the specified column values.
func (q authFallbackQuery) UpdateAll(ctx context.Context, exec boil.ContextExecutor, cols M) (int64, error) {
queries.SetUpdate(q.Query, cols)
result, err := q.Query.ExecContext(ctx, exec)
if err != nil {
return 0, errors.Wrap(err, "models: unable to update all for auth_fallback")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: unable to retrieve rows affected for auth_fallback")
}
return rowsAff, nil
}
// UpdateAll updates all rows with the specified column values, using an executor.
func (o AuthFallbackSlice) UpdateAll(ctx context.Context, exec boil.ContextExecutor, cols M) (int64, error) {
ln := int64(len(o))
if ln == 0 {
return 0, nil
}
if len(cols) == 0 {
return 0, errors.New("models: update all requires at least one column argument")
}
colNames := make([]string, len(cols))
args := make([]interface{}, len(cols))
i := 0
for name, value := range cols {
colNames[i] = name
args[i] = value
i++
}
// Append all of the primary key values for each column
for _, obj := range o {
pkeyArgs := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(obj)), authFallbackPrimaryKeyMapping)
args = append(args, pkeyArgs...)
}
sql := fmt.Sprintf("UPDATE \"auth_fallback\" SET %s WHERE %s",
strmangle.SetParamNames("\"", "\"", 0, colNames),
strmangle.WhereClauseRepeated(string(dialect.LQ), string(dialect.RQ), 0, authFallbackPrimaryKeyColumns, len(o)))
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, args...)
}
result, err := exec.ExecContext(ctx, sql, args...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to update all in authFallback slice")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: unable to retrieve rows affected all in update all authFallback")
}
return rowsAff, nil
}
// Delete deletes a single AuthFallback record with an executor.
// Delete will match against the primary key column to find the record to delete.
func (o *AuthFallback) Delete(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
if o == nil {
return 0, errors.New("models: no AuthFallback provided for delete")
}
if err := o.doBeforeDeleteHooks(ctx, exec); err != nil {
return 0, err
}
args := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(o)), authFallbackPrimaryKeyMapping)
sql := "DELETE FROM \"auth_fallback\" WHERE \"id\"=?"
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, args...)
}
result, err := exec.ExecContext(ctx, sql, args...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to delete from auth_fallback")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by delete for auth_fallback")
}
if err := o.doAfterDeleteHooks(ctx, exec); err != nil {
return 0, err
}
return rowsAff, nil
}
// DeleteAll deletes all matching rows.
func (q authFallbackQuery) DeleteAll(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
if q.Query == nil {
return 0, errors.New("models: no authFallbackQuery provided for delete all")
}
queries.SetDelete(q.Query)
result, err := q.Query.ExecContext(ctx, exec)
if err != nil {
return 0, errors.Wrap(err, "models: unable to delete all from auth_fallback")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by deleteall for auth_fallback")
}
return rowsAff, nil
}
// DeleteAll deletes all rows in the slice, using an executor.
func (o AuthFallbackSlice) DeleteAll(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
if len(o) == 0 {
return 0, nil
}
if len(authFallbackBeforeDeleteHooks) != 0 {
for _, obj := range o {
if err := obj.doBeforeDeleteHooks(ctx, exec); err != nil {
return 0, err
}
}
}
var args []interface{}
for _, obj := range o {
pkeyArgs := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(obj)), authFallbackPrimaryKeyMapping)
args = append(args, pkeyArgs...)
}
sql := "DELETE FROM \"auth_fallback\" WHERE " +
strmangle.WhereClauseRepeated(string(dialect.LQ), string(dialect.RQ), 0, authFallbackPrimaryKeyColumns, len(o))
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, args)
}
result, err := exec.ExecContext(ctx, sql, args...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to delete all from authFallback slice")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by deleteall for auth_fallback")
}
if len(authFallbackAfterDeleteHooks) != 0 {
for _, obj := range o {
if err := obj.doAfterDeleteHooks(ctx, exec); err != nil {
return 0, err
}
}
}
return rowsAff, nil
}
// Reload refetches the object from the database
// using the primary keys with an executor.
func (o *AuthFallback) Reload(ctx context.Context, exec boil.ContextExecutor) error {
ret, err := FindAuthFallback(ctx, exec, o.ID)
if err != nil {
return err
}
*o = *ret
return nil
}
// ReloadAll refetches every row with matching primary key column values
// and overwrites the original object slice with the newly updated slice.
func (o *AuthFallbackSlice) ReloadAll(ctx context.Context, exec boil.ContextExecutor) error {
if o == nil || len(*o) == 0 {
return nil
}
slice := AuthFallbackSlice{}
var args []interface{}
for _, obj := range *o {
pkeyArgs := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(obj)), authFallbackPrimaryKeyMapping)
args = append(args, pkeyArgs...)
}
sql := "SELECT \"auth_fallback\".* FROM \"auth_fallback\" WHERE " +
strmangle.WhereClauseRepeated(string(dialect.LQ), string(dialect.RQ), 0, authFallbackPrimaryKeyColumns, len(*o))
q := queries.Raw(sql, args...)
err := q.Bind(ctx, exec, &slice)
if err != nil {
return errors.Wrap(err, "models: unable to reload all in AuthFallbackSlice")
}
*o = slice
return nil
}
// AuthFallbackExists checks if the AuthFallback row exists.
func AuthFallbackExists(ctx context.Context, exec boil.ContextExecutor, iD int64) (bool, error) {
var exists bool
sql := "select exists(select 1 from \"auth_fallback\" where \"id\"=? limit 1)"
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, iD)
}
row := exec.QueryRowContext(ctx, sql, iD)
err := row.Scan(&exists)
if err != nil {
return false, errors.Wrap(err, "models: unable to check if auth_fallback exists")
}
return exists, nil
}

View File

@ -4,19 +4,21 @@
package models package models
var TableNames = struct { var TableNames = struct {
Aliases string Aliases string
AllowList string DeniedKeys string
AuthFallback string FallbackPasswords string
Invites string Invites string
Notices string Members string
PinNotices string Notices string
Pins string PinNotices string
Pins string
}{ }{
Aliases: "aliases", Aliases: "aliases",
AllowList: "allow_list", DeniedKeys: "denied_keys",
AuthFallback: "auth_fallback", FallbackPasswords: "fallback_passwords",
Invites: "invites", Invites: "invites",
Notices: "notices", Members: "members",
PinNotices: "pin_notices", Notices: "notices",
Pins: "pins", PinNotices: "pin_notices",
Pins: "pins",
} }

View File

@ -0,0 +1,839 @@
// Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT.
// This file is meant to be re-generated in place and/or deleted at any time.
package models
import (
"context"
"database/sql"
"fmt"
"reflect"
"strings"
"sync"
"time"
"github.com/friendsofgo/errors"
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb"
"github.com/volatiletech/sqlboiler/v4/boil"
"github.com/volatiletech/sqlboiler/v4/queries"
"github.com/volatiletech/sqlboiler/v4/queries/qm"
"github.com/volatiletech/sqlboiler/v4/queries/qmhelper"
"github.com/volatiletech/strmangle"
)
// DeniedKey is an object representing the database table.
type DeniedKey struct {
ID int64 `boil:"id" json:"id" toml:"id" yaml:"id"`
PubKey roomdb.DBFeedRef `boil:"pub_key" json:"pub_key" toml:"pub_key" yaml:"pub_key"`
Comment string `boil:"comment" json:"comment" toml:"comment" yaml:"comment"`
CreatedAt time.Time `boil:"created_at" json:"created_at" toml:"created_at" yaml:"created_at"`
R *deniedKeyR `boil:"-" json:"-" toml:"-" yaml:"-"`
L deniedKeyL `boil:"-" json:"-" toml:"-" yaml:"-"`
}
var DeniedKeyColumns = struct {
ID string
PubKey string
Comment string
CreatedAt string
}{
ID: "id",
PubKey: "pub_key",
Comment: "comment",
CreatedAt: "created_at",
}
// Generated where
type whereHelperroomdb_DBFeedRef struct{ field string }
func (w whereHelperroomdb_DBFeedRef) EQ(x roomdb.DBFeedRef) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.EQ, x)
}
func (w whereHelperroomdb_DBFeedRef) NEQ(x roomdb.DBFeedRef) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.NEQ, x)
}
func (w whereHelperroomdb_DBFeedRef) LT(x roomdb.DBFeedRef) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.LT, x)
}
func (w whereHelperroomdb_DBFeedRef) LTE(x roomdb.DBFeedRef) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.LTE, x)
}
func (w whereHelperroomdb_DBFeedRef) GT(x roomdb.DBFeedRef) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.GT, x)
}
func (w whereHelperroomdb_DBFeedRef) GTE(x roomdb.DBFeedRef) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.GTE, x)
}
type whereHelpertime_Time struct{ field string }
func (w whereHelpertime_Time) EQ(x time.Time) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.EQ, x)
}
func (w whereHelpertime_Time) NEQ(x time.Time) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.NEQ, x)
}
func (w whereHelpertime_Time) LT(x time.Time) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.LT, x)
}
func (w whereHelpertime_Time) LTE(x time.Time) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.LTE, x)
}
func (w whereHelpertime_Time) GT(x time.Time) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.GT, x)
}
func (w whereHelpertime_Time) GTE(x time.Time) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.GTE, x)
}
var DeniedKeyWhere = struct {
ID whereHelperint64
PubKey whereHelperroomdb_DBFeedRef
Comment whereHelperstring
CreatedAt whereHelpertime_Time
}{
ID: whereHelperint64{field: "\"denied_keys\".\"id\""},
PubKey: whereHelperroomdb_DBFeedRef{field: "\"denied_keys\".\"pub_key\""},
Comment: whereHelperstring{field: "\"denied_keys\".\"comment\""},
CreatedAt: whereHelpertime_Time{field: "\"denied_keys\".\"created_at\""},
}
// DeniedKeyRels is where relationship names are stored.
var DeniedKeyRels = struct {
}{}
// deniedKeyR is where relationships are stored.
type deniedKeyR struct {
}
// NewStruct creates a new relationship struct
func (*deniedKeyR) NewStruct() *deniedKeyR {
return &deniedKeyR{}
}
// deniedKeyL is where Load methods for each relationship are stored.
type deniedKeyL struct{}
var (
deniedKeyAllColumns = []string{"id", "pub_key", "comment", "created_at"}
deniedKeyColumnsWithoutDefault = []string{}
deniedKeyColumnsWithDefault = []string{"id", "pub_key", "comment", "created_at"}
deniedKeyPrimaryKeyColumns = []string{"id"}
)
type (
// DeniedKeySlice is an alias for a slice of pointers to DeniedKey.
// This should generally be used opposed to []DeniedKey.
DeniedKeySlice []*DeniedKey
// DeniedKeyHook is the signature for custom DeniedKey hook methods
DeniedKeyHook func(context.Context, boil.ContextExecutor, *DeniedKey) error
deniedKeyQuery struct {
*queries.Query
}
)
// Cache for insert, update and upsert
var (
deniedKeyType = reflect.TypeOf(&DeniedKey{})
deniedKeyMapping = queries.MakeStructMapping(deniedKeyType)
deniedKeyPrimaryKeyMapping, _ = queries.BindMapping(deniedKeyType, deniedKeyMapping, deniedKeyPrimaryKeyColumns)
deniedKeyInsertCacheMut sync.RWMutex
deniedKeyInsertCache = make(map[string]insertCache)
deniedKeyUpdateCacheMut sync.RWMutex
deniedKeyUpdateCache = make(map[string]updateCache)
deniedKeyUpsertCacheMut sync.RWMutex
deniedKeyUpsertCache = make(map[string]insertCache)
)
var (
// Force time package dependency for automated UpdatedAt/CreatedAt.
_ = time.Second
// Force qmhelper dependency for where clause generation (which doesn't
// always happen)
_ = qmhelper.Where
)
var deniedKeyBeforeInsertHooks []DeniedKeyHook
var deniedKeyBeforeUpdateHooks []DeniedKeyHook
var deniedKeyBeforeDeleteHooks []DeniedKeyHook
var deniedKeyBeforeUpsertHooks []DeniedKeyHook
var deniedKeyAfterInsertHooks []DeniedKeyHook
var deniedKeyAfterSelectHooks []DeniedKeyHook
var deniedKeyAfterUpdateHooks []DeniedKeyHook
var deniedKeyAfterDeleteHooks []DeniedKeyHook
var deniedKeyAfterUpsertHooks []DeniedKeyHook
// doBeforeInsertHooks executes all "before insert" hooks.
func (o *DeniedKey) doBeforeInsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range deniedKeyBeforeInsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doBeforeUpdateHooks executes all "before Update" hooks.
func (o *DeniedKey) doBeforeUpdateHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range deniedKeyBeforeUpdateHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doBeforeDeleteHooks executes all "before Delete" hooks.
func (o *DeniedKey) doBeforeDeleteHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range deniedKeyBeforeDeleteHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doBeforeUpsertHooks executes all "before Upsert" hooks.
func (o *DeniedKey) doBeforeUpsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range deniedKeyBeforeUpsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterInsertHooks executes all "after Insert" hooks.
func (o *DeniedKey) doAfterInsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range deniedKeyAfterInsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterSelectHooks executes all "after Select" hooks.
func (o *DeniedKey) doAfterSelectHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range deniedKeyAfterSelectHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterUpdateHooks executes all "after Update" hooks.
func (o *DeniedKey) doAfterUpdateHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range deniedKeyAfterUpdateHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterDeleteHooks executes all "after Delete" hooks.
func (o *DeniedKey) doAfterDeleteHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range deniedKeyAfterDeleteHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterUpsertHooks executes all "after Upsert" hooks.
func (o *DeniedKey) doAfterUpsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range deniedKeyAfterUpsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// AddDeniedKeyHook registers your hook function for all future operations.
func AddDeniedKeyHook(hookPoint boil.HookPoint, deniedKeyHook DeniedKeyHook) {
switch hookPoint {
case boil.BeforeInsertHook:
deniedKeyBeforeInsertHooks = append(deniedKeyBeforeInsertHooks, deniedKeyHook)
case boil.BeforeUpdateHook:
deniedKeyBeforeUpdateHooks = append(deniedKeyBeforeUpdateHooks, deniedKeyHook)
case boil.BeforeDeleteHook:
deniedKeyBeforeDeleteHooks = append(deniedKeyBeforeDeleteHooks, deniedKeyHook)
case boil.BeforeUpsertHook:
deniedKeyBeforeUpsertHooks = append(deniedKeyBeforeUpsertHooks, deniedKeyHook)
case boil.AfterInsertHook:
deniedKeyAfterInsertHooks = append(deniedKeyAfterInsertHooks, deniedKeyHook)
case boil.AfterSelectHook:
deniedKeyAfterSelectHooks = append(deniedKeyAfterSelectHooks, deniedKeyHook)
case boil.AfterUpdateHook:
deniedKeyAfterUpdateHooks = append(deniedKeyAfterUpdateHooks, deniedKeyHook)
case boil.AfterDeleteHook:
deniedKeyAfterDeleteHooks = append(deniedKeyAfterDeleteHooks, deniedKeyHook)
case boil.AfterUpsertHook:
deniedKeyAfterUpsertHooks = append(deniedKeyAfterUpsertHooks, deniedKeyHook)
}
}
// One returns a single deniedKey record from the query.
func (q deniedKeyQuery) One(ctx context.Context, exec boil.ContextExecutor) (*DeniedKey, error) {
o := &DeniedKey{}
queries.SetLimit(q.Query, 1)
err := q.Bind(ctx, exec, o)
if err != nil {
if errors.Cause(err) == sql.ErrNoRows {
return nil, sql.ErrNoRows
}
return nil, errors.Wrap(err, "models: failed to execute a one query for denied_keys")
}
if err := o.doAfterSelectHooks(ctx, exec); err != nil {
return o, err
}
return o, nil
}
// All returns all DeniedKey records from the query.
func (q deniedKeyQuery) All(ctx context.Context, exec boil.ContextExecutor) (DeniedKeySlice, error) {
var o []*DeniedKey
err := q.Bind(ctx, exec, &o)
if err != nil {
return nil, errors.Wrap(err, "models: failed to assign all query results to DeniedKey slice")
}
if len(deniedKeyAfterSelectHooks) != 0 {
for _, obj := range o {
if err := obj.doAfterSelectHooks(ctx, exec); err != nil {
return o, err
}
}
}
return o, nil
}
// Count returns the count of all DeniedKey records in the query.
func (q deniedKeyQuery) Count(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
var count int64
queries.SetSelect(q.Query, nil)
queries.SetCount(q.Query)
err := q.Query.QueryRowContext(ctx, exec).Scan(&count)
if err != nil {
return 0, errors.Wrap(err, "models: failed to count denied_keys rows")
}
return count, nil
}
// Exists checks if the row exists in the table.
func (q deniedKeyQuery) Exists(ctx context.Context, exec boil.ContextExecutor) (bool, error) {
var count int64
queries.SetSelect(q.Query, nil)
queries.SetCount(q.Query)
queries.SetLimit(q.Query, 1)
err := q.Query.QueryRowContext(ctx, exec).Scan(&count)
if err != nil {
return false, errors.Wrap(err, "models: failed to check if denied_keys exists")
}
return count > 0, nil
}
// DeniedKeys retrieves all the records using an executor.
func DeniedKeys(mods ...qm.QueryMod) deniedKeyQuery {
mods = append(mods, qm.From("\"denied_keys\""))
return deniedKeyQuery{NewQuery(mods...)}
}
// FindDeniedKey retrieves a single record by ID with an executor.
// If selectCols is empty Find will return all columns.
func FindDeniedKey(ctx context.Context, exec boil.ContextExecutor, iD int64, selectCols ...string) (*DeniedKey, error) {
deniedKeyObj := &DeniedKey{}
sel := "*"
if len(selectCols) > 0 {
sel = strings.Join(strmangle.IdentQuoteSlice(dialect.LQ, dialect.RQ, selectCols), ",")
}
query := fmt.Sprintf(
"select %s from \"denied_keys\" where \"id\"=?", sel,
)
q := queries.Raw(query, iD)
err := q.Bind(ctx, exec, deniedKeyObj)
if err != nil {
if errors.Cause(err) == sql.ErrNoRows {
return nil, sql.ErrNoRows
}
return nil, errors.Wrap(err, "models: unable to select from denied_keys")
}
return deniedKeyObj, nil
}
// Insert a single record using an executor.
// See boil.Columns.InsertColumnSet documentation to understand column list inference for inserts.
func (o *DeniedKey) Insert(ctx context.Context, exec boil.ContextExecutor, columns boil.Columns) error {
if o == nil {
return errors.New("models: no denied_keys provided for insertion")
}
var err error
if !boil.TimestampsAreSkipped(ctx) {
currTime := time.Now().In(boil.GetLocation())
if o.CreatedAt.IsZero() {
o.CreatedAt = currTime
}
}
if err := o.doBeforeInsertHooks(ctx, exec); err != nil {
return err
}
nzDefaults := queries.NonZeroDefaultSet(deniedKeyColumnsWithDefault, o)
key := makeCacheKey(columns, nzDefaults)
deniedKeyInsertCacheMut.RLock()
cache, cached := deniedKeyInsertCache[key]
deniedKeyInsertCacheMut.RUnlock()
if !cached {
wl, returnColumns := columns.InsertColumnSet(
deniedKeyAllColumns,
deniedKeyColumnsWithDefault,
deniedKeyColumnsWithoutDefault,
nzDefaults,
)
cache.valueMapping, err = queries.BindMapping(deniedKeyType, deniedKeyMapping, wl)
if err != nil {
return err
}
cache.retMapping, err = queries.BindMapping(deniedKeyType, deniedKeyMapping, returnColumns)
if err != nil {
return err
}
if len(wl) != 0 {
cache.query = fmt.Sprintf("INSERT INTO \"denied_keys\" (\"%s\") %%sVALUES (%s)%%s", strings.Join(wl, "\",\""), strmangle.Placeholders(dialect.UseIndexPlaceholders, len(wl), 1, 1))
} else {
cache.query = "INSERT INTO \"denied_keys\" %sDEFAULT VALUES%s"
}
var queryOutput, queryReturning string
if len(cache.retMapping) != 0 {
cache.retQuery = fmt.Sprintf("SELECT \"%s\" FROM \"denied_keys\" WHERE %s", strings.Join(returnColumns, "\",\""), strmangle.WhereClause("\"", "\"", 0, deniedKeyPrimaryKeyColumns))
}
cache.query = fmt.Sprintf(cache.query, queryOutput, queryReturning)
}
value := reflect.Indirect(reflect.ValueOf(o))
vals := queries.ValuesFromMapping(value, cache.valueMapping)
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, cache.query)
fmt.Fprintln(writer, vals)
}
result, err := exec.ExecContext(ctx, cache.query, vals...)
if err != nil {
return errors.Wrap(err, "models: unable to insert into denied_keys")
}
var lastID int64
var identifierCols []interface{}
if len(cache.retMapping) == 0 {
goto CacheNoHooks
}
lastID, err = result.LastInsertId()
if err != nil {
return ErrSyncFail
}
o.ID = int64(lastID)
if lastID != 0 && len(cache.retMapping) == 1 && cache.retMapping[0] == deniedKeyMapping["id"] {
goto CacheNoHooks
}
identifierCols = []interface{}{
o.ID,
}
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, cache.retQuery)
fmt.Fprintln(writer, identifierCols...)
}
err = exec.QueryRowContext(ctx, cache.retQuery, identifierCols...).Scan(queries.PtrsFromMapping(value, cache.retMapping)...)
if err != nil {
return errors.Wrap(err, "models: unable to populate default values for denied_keys")
}
CacheNoHooks:
if !cached {
deniedKeyInsertCacheMut.Lock()
deniedKeyInsertCache[key] = cache
deniedKeyInsertCacheMut.Unlock()
}
return o.doAfterInsertHooks(ctx, exec)
}
// Update uses an executor to update the DeniedKey.
// See boil.Columns.UpdateColumnSet documentation to understand column list inference for updates.
// Update does not automatically update the record in case of default values. Use .Reload() to refresh the records.
func (o *DeniedKey) Update(ctx context.Context, exec boil.ContextExecutor, columns boil.Columns) (int64, error) {
var err error
if err = o.doBeforeUpdateHooks(ctx, exec); err != nil {
return 0, err
}
key := makeCacheKey(columns, nil)
deniedKeyUpdateCacheMut.RLock()
cache, cached := deniedKeyUpdateCache[key]
deniedKeyUpdateCacheMut.RUnlock()
if !cached {
wl := columns.UpdateColumnSet(
deniedKeyAllColumns,
deniedKeyPrimaryKeyColumns,
)
if !columns.IsWhitelist() {
wl = strmangle.SetComplement(wl, []string{"created_at"})
}
if len(wl) == 0 {
return 0, errors.New("models: unable to update denied_keys, could not build whitelist")
}
cache.query = fmt.Sprintf("UPDATE \"denied_keys\" SET %s WHERE %s",
strmangle.SetParamNames("\"", "\"", 0, wl),
strmangle.WhereClause("\"", "\"", 0, deniedKeyPrimaryKeyColumns),
)
cache.valueMapping, err = queries.BindMapping(deniedKeyType, deniedKeyMapping, append(wl, deniedKeyPrimaryKeyColumns...))
if err != nil {
return 0, err
}
}
values := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(o)), cache.valueMapping)
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, cache.query)
fmt.Fprintln(writer, values)
}
var result sql.Result
result, err = exec.ExecContext(ctx, cache.query, values...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to update denied_keys row")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by update for denied_keys")
}
if !cached {
deniedKeyUpdateCacheMut.Lock()
deniedKeyUpdateCache[key] = cache
deniedKeyUpdateCacheMut.Unlock()
}
return rowsAff, o.doAfterUpdateHooks(ctx, exec)
}
// UpdateAll updates all rows with the specified column values.
func (q deniedKeyQuery) UpdateAll(ctx context.Context, exec boil.ContextExecutor, cols M) (int64, error) {
queries.SetUpdate(q.Query, cols)
result, err := q.Query.ExecContext(ctx, exec)
if err != nil {
return 0, errors.Wrap(err, "models: unable to update all for denied_keys")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: unable to retrieve rows affected for denied_keys")
}
return rowsAff, nil
}
// UpdateAll updates all rows with the specified column values, using an executor.
func (o DeniedKeySlice) UpdateAll(ctx context.Context, exec boil.ContextExecutor, cols M) (int64, error) {
ln := int64(len(o))
if ln == 0 {
return 0, nil
}
if len(cols) == 0 {
return 0, errors.New("models: update all requires at least one column argument")
}
colNames := make([]string, len(cols))
args := make([]interface{}, len(cols))
i := 0
for name, value := range cols {
colNames[i] = name
args[i] = value
i++
}
// Append all of the primary key values for each column
for _, obj := range o {
pkeyArgs := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(obj)), deniedKeyPrimaryKeyMapping)
args = append(args, pkeyArgs...)
}
sql := fmt.Sprintf("UPDATE \"denied_keys\" SET %s WHERE %s",
strmangle.SetParamNames("\"", "\"", 0, colNames),
strmangle.WhereClauseRepeated(string(dialect.LQ), string(dialect.RQ), 0, deniedKeyPrimaryKeyColumns, len(o)))
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, args...)
}
result, err := exec.ExecContext(ctx, sql, args...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to update all in deniedKey slice")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: unable to retrieve rows affected all in update all deniedKey")
}
return rowsAff, nil
}
// Delete deletes a single DeniedKey record with an executor.
// Delete will match against the primary key column to find the record to delete.
func (o *DeniedKey) Delete(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
if o == nil {
return 0, errors.New("models: no DeniedKey provided for delete")
}
if err := o.doBeforeDeleteHooks(ctx, exec); err != nil {
return 0, err
}
args := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(o)), deniedKeyPrimaryKeyMapping)
sql := "DELETE FROM \"denied_keys\" WHERE \"id\"=?"
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, args...)
}
result, err := exec.ExecContext(ctx, sql, args...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to delete from denied_keys")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by delete for denied_keys")
}
if err := o.doAfterDeleteHooks(ctx, exec); err != nil {
return 0, err
}
return rowsAff, nil
}
// DeleteAll deletes all matching rows.
func (q deniedKeyQuery) DeleteAll(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
if q.Query == nil {
return 0, errors.New("models: no deniedKeyQuery provided for delete all")
}
queries.SetDelete(q.Query)
result, err := q.Query.ExecContext(ctx, exec)
if err != nil {
return 0, errors.Wrap(err, "models: unable to delete all from denied_keys")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by deleteall for denied_keys")
}
return rowsAff, nil
}
// DeleteAll deletes all rows in the slice, using an executor.
func (o DeniedKeySlice) DeleteAll(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
if len(o) == 0 {
return 0, nil
}
if len(deniedKeyBeforeDeleteHooks) != 0 {
for _, obj := range o {
if err := obj.doBeforeDeleteHooks(ctx, exec); err != nil {
return 0, err
}
}
}
var args []interface{}
for _, obj := range o {
pkeyArgs := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(obj)), deniedKeyPrimaryKeyMapping)
args = append(args, pkeyArgs...)
}
sql := "DELETE FROM \"denied_keys\" WHERE " +
strmangle.WhereClauseRepeated(string(dialect.LQ), string(dialect.RQ), 0, deniedKeyPrimaryKeyColumns, len(o))
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, args)
}
result, err := exec.ExecContext(ctx, sql, args...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to delete all from deniedKey slice")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by deleteall for denied_keys")
}
if len(deniedKeyAfterDeleteHooks) != 0 {
for _, obj := range o {
if err := obj.doAfterDeleteHooks(ctx, exec); err != nil {
return 0, err
}
}
}
return rowsAff, nil
}
// Reload refetches the object from the database
// using the primary keys with an executor.
func (o *DeniedKey) Reload(ctx context.Context, exec boil.ContextExecutor) error {
ret, err := FindDeniedKey(ctx, exec, o.ID)
if err != nil {
return err
}
*o = *ret
return nil
}
// ReloadAll refetches every row with matching primary key column values
// and overwrites the original object slice with the newly updated slice.
func (o *DeniedKeySlice) ReloadAll(ctx context.Context, exec boil.ContextExecutor) error {
if o == nil || len(*o) == 0 {
return nil
}
slice := DeniedKeySlice{}
var args []interface{}
for _, obj := range *o {
pkeyArgs := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(obj)), deniedKeyPrimaryKeyMapping)
args = append(args, pkeyArgs...)
}
sql := "SELECT \"denied_keys\".* FROM \"denied_keys\" WHERE " +
strmangle.WhereClauseRepeated(string(dialect.LQ), string(dialect.RQ), 0, deniedKeyPrimaryKeyColumns, len(*o))
q := queries.Raw(sql, args...)
err := q.Bind(ctx, exec, &slice)
if err != nil {
return errors.Wrap(err, "models: unable to reload all in DeniedKeySlice")
}
*o = slice
return nil
}
// DeniedKeyExists checks if the DeniedKey row exists.
func DeniedKeyExists(ctx context.Context, exec boil.ContextExecutor, iD int64) (bool, error) {
var exists bool
sql := "select exists(select 1 from \"denied_keys\" where \"id\"=? limit 1)"
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, iD)
}
row := exec.QueryRowContext(ctx, sql, iD)
err := row.Scan(&exists)
if err != nil {
return false, errors.Wrap(err, "models: unable to check if denied_keys exists")
}
return exists, nil
}

View File

@ -0,0 +1,958 @@
// Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT.
// This file is meant to be re-generated in place and/or deleted at any time.
package models
import (
"context"
"database/sql"
"fmt"
"reflect"
"strings"
"sync"
"time"
"github.com/friendsofgo/errors"
"github.com/volatiletech/sqlboiler/v4/boil"
"github.com/volatiletech/sqlboiler/v4/queries"
"github.com/volatiletech/sqlboiler/v4/queries/qm"
"github.com/volatiletech/sqlboiler/v4/queries/qmhelper"
"github.com/volatiletech/strmangle"
)
// FallbackPassword is an object representing the database table.
type FallbackPassword struct {
ID int64 `boil:"id" json:"id" toml:"id" yaml:"id"`
Login string `boil:"login" json:"login" toml:"login" yaml:"login"`
PasswordHash []byte `boil:"password_hash" json:"password_hash" toml:"password_hash" yaml:"password_hash"`
MemberID int64 `boil:"member_id" json:"member_id" toml:"member_id" yaml:"member_id"`
R *fallbackPasswordR `boil:"-" json:"-" toml:"-" yaml:"-"`
L fallbackPasswordL `boil:"-" json:"-" toml:"-" yaml:"-"`
}
var FallbackPasswordColumns = struct {
ID string
Login string
PasswordHash string
MemberID string
}{
ID: "id",
Login: "login",
PasswordHash: "password_hash",
MemberID: "member_id",
}
// Generated where
var FallbackPasswordWhere = struct {
ID whereHelperint64
Login whereHelperstring
PasswordHash whereHelper__byte
MemberID whereHelperint64
}{
ID: whereHelperint64{field: "\"fallback_passwords\".\"id\""},
Login: whereHelperstring{field: "\"fallback_passwords\".\"login\""},
PasswordHash: whereHelper__byte{field: "\"fallback_passwords\".\"password_hash\""},
MemberID: whereHelperint64{field: "\"fallback_passwords\".\"member_id\""},
}
// FallbackPasswordRels is where relationship names are stored.
var FallbackPasswordRels = struct {
Member string
}{
Member: "Member",
}
// fallbackPasswordR is where relationships are stored.
type fallbackPasswordR struct {
Member *Member `boil:"Member" json:"Member" toml:"Member" yaml:"Member"`
}
// NewStruct creates a new relationship struct
func (*fallbackPasswordR) NewStruct() *fallbackPasswordR {
return &fallbackPasswordR{}
}
// fallbackPasswordL is where Load methods for each relationship are stored.
type fallbackPasswordL struct{}
var (
fallbackPasswordAllColumns = []string{"id", "login", "password_hash", "member_id"}
fallbackPasswordColumnsWithoutDefault = []string{}
fallbackPasswordColumnsWithDefault = []string{"id", "login", "password_hash", "member_id"}
fallbackPasswordPrimaryKeyColumns = []string{"id"}
)
type (
// FallbackPasswordSlice is an alias for a slice of pointers to FallbackPassword.
// This should generally be used opposed to []FallbackPassword.
FallbackPasswordSlice []*FallbackPassword
// FallbackPasswordHook is the signature for custom FallbackPassword hook methods
FallbackPasswordHook func(context.Context, boil.ContextExecutor, *FallbackPassword) error
fallbackPasswordQuery struct {
*queries.Query
}
)
// Cache for insert, update and upsert
var (
fallbackPasswordType = reflect.TypeOf(&FallbackPassword{})
fallbackPasswordMapping = queries.MakeStructMapping(fallbackPasswordType)
fallbackPasswordPrimaryKeyMapping, _ = queries.BindMapping(fallbackPasswordType, fallbackPasswordMapping, fallbackPasswordPrimaryKeyColumns)
fallbackPasswordInsertCacheMut sync.RWMutex
fallbackPasswordInsertCache = make(map[string]insertCache)
fallbackPasswordUpdateCacheMut sync.RWMutex
fallbackPasswordUpdateCache = make(map[string]updateCache)
fallbackPasswordUpsertCacheMut sync.RWMutex
fallbackPasswordUpsertCache = make(map[string]insertCache)
)
var (
// Force time package dependency for automated UpdatedAt/CreatedAt.
_ = time.Second
// Force qmhelper dependency for where clause generation (which doesn't
// always happen)
_ = qmhelper.Where
)
var fallbackPasswordBeforeInsertHooks []FallbackPasswordHook
var fallbackPasswordBeforeUpdateHooks []FallbackPasswordHook
var fallbackPasswordBeforeDeleteHooks []FallbackPasswordHook
var fallbackPasswordBeforeUpsertHooks []FallbackPasswordHook
var fallbackPasswordAfterInsertHooks []FallbackPasswordHook
var fallbackPasswordAfterSelectHooks []FallbackPasswordHook
var fallbackPasswordAfterUpdateHooks []FallbackPasswordHook
var fallbackPasswordAfterDeleteHooks []FallbackPasswordHook
var fallbackPasswordAfterUpsertHooks []FallbackPasswordHook
// doBeforeInsertHooks executes all "before insert" hooks.
func (o *FallbackPassword) doBeforeInsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range fallbackPasswordBeforeInsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doBeforeUpdateHooks executes all "before Update" hooks.
func (o *FallbackPassword) doBeforeUpdateHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range fallbackPasswordBeforeUpdateHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doBeforeDeleteHooks executes all "before Delete" hooks.
func (o *FallbackPassword) doBeforeDeleteHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range fallbackPasswordBeforeDeleteHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doBeforeUpsertHooks executes all "before Upsert" hooks.
func (o *FallbackPassword) doBeforeUpsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range fallbackPasswordBeforeUpsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterInsertHooks executes all "after Insert" hooks.
func (o *FallbackPassword) doAfterInsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range fallbackPasswordAfterInsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterSelectHooks executes all "after Select" hooks.
func (o *FallbackPassword) doAfterSelectHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range fallbackPasswordAfterSelectHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterUpdateHooks executes all "after Update" hooks.
func (o *FallbackPassword) doAfterUpdateHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range fallbackPasswordAfterUpdateHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterDeleteHooks executes all "after Delete" hooks.
func (o *FallbackPassword) doAfterDeleteHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range fallbackPasswordAfterDeleteHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// doAfterUpsertHooks executes all "after Upsert" hooks.
func (o *FallbackPassword) doAfterUpsertHooks(ctx context.Context, exec boil.ContextExecutor) (err error) {
if boil.HooksAreSkipped(ctx) {
return nil
}
for _, hook := range fallbackPasswordAfterUpsertHooks {
if err := hook(ctx, exec, o); err != nil {
return err
}
}
return nil
}
// AddFallbackPasswordHook registers your hook function for all future operations.
func AddFallbackPasswordHook(hookPoint boil.HookPoint, fallbackPasswordHook FallbackPasswordHook) {
switch hookPoint {
case boil.BeforeInsertHook:
fallbackPasswordBeforeInsertHooks = append(fallbackPasswordBeforeInsertHooks, fallbackPasswordHook)
case boil.BeforeUpdateHook:
fallbackPasswordBeforeUpdateHooks = append(fallbackPasswordBeforeUpdateHooks, fallbackPasswordHook)
case boil.BeforeDeleteHook:
fallbackPasswordBeforeDeleteHooks = append(fallbackPasswordBeforeDeleteHooks, fallbackPasswordHook)
case boil.BeforeUpsertHook:
fallbackPasswordBeforeUpsertHooks = append(fallbackPasswordBeforeUpsertHooks, fallbackPasswordHook)
case boil.AfterInsertHook:
fallbackPasswordAfterInsertHooks = append(fallbackPasswordAfterInsertHooks, fallbackPasswordHook)
case boil.AfterSelectHook:
fallbackPasswordAfterSelectHooks = append(fallbackPasswordAfterSelectHooks, fallbackPasswordHook)
case boil.AfterUpdateHook:
fallbackPasswordAfterUpdateHooks = append(fallbackPasswordAfterUpdateHooks, fallbackPasswordHook)
case boil.AfterDeleteHook:
fallbackPasswordAfterDeleteHooks = append(fallbackPasswordAfterDeleteHooks, fallbackPasswordHook)
case boil.AfterUpsertHook:
fallbackPasswordAfterUpsertHooks = append(fallbackPasswordAfterUpsertHooks, fallbackPasswordHook)
}
}
// One returns a single fallbackPassword record from the query.
func (q fallbackPasswordQuery) One(ctx context.Context, exec boil.ContextExecutor) (*FallbackPassword, error) {
o := &FallbackPassword{}
queries.SetLimit(q.Query, 1)
err := q.Bind(ctx, exec, o)
if err != nil {
if errors.Cause(err) == sql.ErrNoRows {
return nil, sql.ErrNoRows
}
return nil, errors.Wrap(err, "models: failed to execute a one query for fallback_passwords")
}
if err := o.doAfterSelectHooks(ctx, exec); err != nil {
return o, err
}
return o, nil
}
// All returns all FallbackPassword records from the query.
func (q fallbackPasswordQuery) All(ctx context.Context, exec boil.ContextExecutor) (FallbackPasswordSlice, error) {
var o []*FallbackPassword
err := q.Bind(ctx, exec, &o)
if err != nil {
return nil, errors.Wrap(err, "models: failed to assign all query results to FallbackPassword slice")
}
if len(fallbackPasswordAfterSelectHooks) != 0 {
for _, obj := range o {
if err := obj.doAfterSelectHooks(ctx, exec); err != nil {
return o, err
}
}
}
return o, nil
}
// Count returns the count of all FallbackPassword records in the query.
func (q fallbackPasswordQuery) Count(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
var count int64
queries.SetSelect(q.Query, nil)
queries.SetCount(q.Query)
err := q.Query.QueryRowContext(ctx, exec).Scan(&count)
if err != nil {
return 0, errors.Wrap(err, "models: failed to count fallback_passwords rows")
}
return count, nil
}
// Exists checks if the row exists in the table.
func (q fallbackPasswordQuery) Exists(ctx context.Context, exec boil.ContextExecutor) (bool, error) {
var count int64
queries.SetSelect(q.Query, nil)
queries.SetCount(q.Query)
queries.SetLimit(q.Query, 1)
err := q.Query.QueryRowContext(ctx, exec).Scan(&count)
if err != nil {
return false, errors.Wrap(err, "models: failed to check if fallback_passwords exists")
}
return count > 0, nil
}
// Member pointed to by the foreign key.
func (o *FallbackPassword) Member(mods ...qm.QueryMod) memberQuery {
queryMods := []qm.QueryMod{
qm.Where("\"id\" = ?", o.MemberID),
}
queryMods = append(queryMods, mods...)
query := Members(queryMods...)
queries.SetFrom(query.Query, "\"members\"")
return query
}
// LoadMember allows an eager lookup of values, cached into the
// loaded structs of the objects. This is for an N-1 relationship.
func (fallbackPasswordL) LoadMember(ctx context.Context, e boil.ContextExecutor, singular bool, maybeFallbackPassword interface{}, mods queries.Applicator) error {
var slice []*FallbackPassword
var object *FallbackPassword
if singular {
object = maybeFallbackPassword.(*FallbackPassword)
} else {
slice = *maybeFallbackPassword.(*[]*FallbackPassword)
}
args := make([]interface{}, 0, 1)
if singular {
if object.R == nil {
object.R = &fallbackPasswordR{}
}
args = append(args, object.MemberID)
} else {
Outer:
for _, obj := range slice {
if obj.R == nil {
obj.R = &fallbackPasswordR{}
}
for _, a := range args {
if a == obj.MemberID {
continue Outer
}
}
args = append(args, obj.MemberID)
}
}
if len(args) == 0 {
return nil
}
query := NewQuery(
qm.From(`members`),
qm.WhereIn(`members.id in ?`, args...),
)
if mods != nil {
mods.Apply(query)
}
results, err := query.QueryContext(ctx, e)
if err != nil {
return errors.Wrap(err, "failed to eager load Member")
}
var resultSlice []*Member
if err = queries.Bind(results, &resultSlice); err != nil {
return errors.Wrap(err, "failed to bind eager loaded slice Member")
}
if err = results.Close(); err != nil {
return errors.Wrap(err, "failed to close results of eager load for members")
}
if err = results.Err(); err != nil {
return errors.Wrap(err, "error occurred during iteration of eager loaded relations for members")
}
if len(fallbackPasswordAfterSelectHooks) != 0 {
for _, obj := range resultSlice {
if err := obj.doAfterSelectHooks(ctx, e); err != nil {
return err
}
}
}
if len(resultSlice) == 0 {
return nil
}
if singular {
foreign := resultSlice[0]
object.R.Member = foreign
if foreign.R == nil {
foreign.R = &memberR{}
}
foreign.R.FallbackPasswords = append(foreign.R.FallbackPasswords, object)
return nil
}
for _, local := range slice {
for _, foreign := range resultSlice {
if local.MemberID == foreign.ID {
local.R.Member = foreign
if foreign.R == nil {
foreign.R = &memberR{}
}
foreign.R.FallbackPasswords = append(foreign.R.FallbackPasswords, local)
break
}
}
}
return nil
}
// SetMember of the fallbackPassword to the related item.
// Sets o.R.Member to related.
// Adds o to related.R.FallbackPasswords.
func (o *FallbackPassword) SetMember(ctx context.Context, exec boil.ContextExecutor, insert bool, related *Member) error {
var err error
if insert {
if err = related.Insert(ctx, exec, boil.Infer()); err != nil {
return errors.Wrap(err, "failed to insert into foreign table")
}
}
updateQuery := fmt.Sprintf(
"UPDATE \"fallback_passwords\" SET %s WHERE %s",
strmangle.SetParamNames("\"", "\"", 0, []string{"member_id"}),
strmangle.WhereClause("\"", "\"", 0, fallbackPasswordPrimaryKeyColumns),
)
values := []interface{}{related.ID, o.ID}
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, updateQuery)
fmt.Fprintln(writer, values)
}
if _, err = exec.ExecContext(ctx, updateQuery, values...); err != nil {
return errors.Wrap(err, "failed to update local table")
}
o.MemberID = related.ID
if o.R == nil {
o.R = &fallbackPasswordR{
Member: related,
}
} else {
o.R.Member = related
}
if related.R == nil {
related.R = &memberR{
FallbackPasswords: FallbackPasswordSlice{o},
}
} else {
related.R.FallbackPasswords = append(related.R.FallbackPasswords, o)
}
return nil
}
// FallbackPasswords retrieves all the records using an executor.
func FallbackPasswords(mods ...qm.QueryMod) fallbackPasswordQuery {
mods = append(mods, qm.From("\"fallback_passwords\""))
return fallbackPasswordQuery{NewQuery(mods...)}
}
// FindFallbackPassword retrieves a single record by ID with an executor.
// If selectCols is empty Find will return all columns.
func FindFallbackPassword(ctx context.Context, exec boil.ContextExecutor, iD int64, selectCols ...string) (*FallbackPassword, error) {
fallbackPasswordObj := &FallbackPassword{}
sel := "*"
if len(selectCols) > 0 {
sel = strings.Join(strmangle.IdentQuoteSlice(dialect.LQ, dialect.RQ, selectCols), ",")
}
query := fmt.Sprintf(
"select %s from \"fallback_passwords\" where \"id\"=?", sel,
)
q := queries.Raw(query, iD)
err := q.Bind(ctx, exec, fallbackPasswordObj)
if err != nil {
if errors.Cause(err) == sql.ErrNoRows {
return nil, sql.ErrNoRows
}
return nil, errors.Wrap(err, "models: unable to select from fallback_passwords")
}
return fallbackPasswordObj, nil
}
// Insert a single record using an executor.
// See boil.Columns.InsertColumnSet documentation to understand column list inference for inserts.
func (o *FallbackPassword) Insert(ctx context.Context, exec boil.ContextExecutor, columns boil.Columns) error {
if o == nil {
return errors.New("models: no fallback_passwords provided for insertion")
}
var err error
if err := o.doBeforeInsertHooks(ctx, exec); err != nil {
return err
}
nzDefaults := queries.NonZeroDefaultSet(fallbackPasswordColumnsWithDefault, o)
key := makeCacheKey(columns, nzDefaults)
fallbackPasswordInsertCacheMut.RLock()
cache, cached := fallbackPasswordInsertCache[key]
fallbackPasswordInsertCacheMut.RUnlock()
if !cached {
wl, returnColumns := columns.InsertColumnSet(
fallbackPasswordAllColumns,
fallbackPasswordColumnsWithDefault,
fallbackPasswordColumnsWithoutDefault,
nzDefaults,
)
cache.valueMapping, err = queries.BindMapping(fallbackPasswordType, fallbackPasswordMapping, wl)
if err != nil {
return err
}
cache.retMapping, err = queries.BindMapping(fallbackPasswordType, fallbackPasswordMapping, returnColumns)
if err != nil {
return err
}
if len(wl) != 0 {
cache.query = fmt.Sprintf("INSERT INTO \"fallback_passwords\" (\"%s\") %%sVALUES (%s)%%s", strings.Join(wl, "\",\""), strmangle.Placeholders(dialect.UseIndexPlaceholders, len(wl), 1, 1))
} else {
cache.query = "INSERT INTO \"fallback_passwords\" %sDEFAULT VALUES%s"
}
var queryOutput, queryReturning string
if len(cache.retMapping) != 0 {
cache.retQuery = fmt.Sprintf("SELECT \"%s\" FROM \"fallback_passwords\" WHERE %s", strings.Join(returnColumns, "\",\""), strmangle.WhereClause("\"", "\"", 0, fallbackPasswordPrimaryKeyColumns))
}
cache.query = fmt.Sprintf(cache.query, queryOutput, queryReturning)
}
value := reflect.Indirect(reflect.ValueOf(o))
vals := queries.ValuesFromMapping(value, cache.valueMapping)
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, cache.query)
fmt.Fprintln(writer, vals)
}
result, err := exec.ExecContext(ctx, cache.query, vals...)
if err != nil {
return errors.Wrap(err, "models: unable to insert into fallback_passwords")
}
var lastID int64
var identifierCols []interface{}
if len(cache.retMapping) == 0 {
goto CacheNoHooks
}
lastID, err = result.LastInsertId()
if err != nil {
return ErrSyncFail
}
o.ID = int64(lastID)
if lastID != 0 && len(cache.retMapping) == 1 && cache.retMapping[0] == fallbackPasswordMapping["id"] {
goto CacheNoHooks
}
identifierCols = []interface{}{
o.ID,
}
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, cache.retQuery)
fmt.Fprintln(writer, identifierCols...)
}
err = exec.QueryRowContext(ctx, cache.retQuery, identifierCols...).Scan(queries.PtrsFromMapping(value, cache.retMapping)...)
if err != nil {
return errors.Wrap(err, "models: unable to populate default values for fallback_passwords")
}
CacheNoHooks:
if !cached {
fallbackPasswordInsertCacheMut.Lock()
fallbackPasswordInsertCache[key] = cache
fallbackPasswordInsertCacheMut.Unlock()
}
return o.doAfterInsertHooks(ctx, exec)
}
// Update uses an executor to update the FallbackPassword.
// See boil.Columns.UpdateColumnSet documentation to understand column list inference for updates.
// Update does not automatically update the record in case of default values. Use .Reload() to refresh the records.
func (o *FallbackPassword) Update(ctx context.Context, exec boil.ContextExecutor, columns boil.Columns) (int64, error) {
var err error
if err = o.doBeforeUpdateHooks(ctx, exec); err != nil {
return 0, err
}
key := makeCacheKey(columns, nil)
fallbackPasswordUpdateCacheMut.RLock()
cache, cached := fallbackPasswordUpdateCache[key]
fallbackPasswordUpdateCacheMut.RUnlock()
if !cached {
wl := columns.UpdateColumnSet(
fallbackPasswordAllColumns,
fallbackPasswordPrimaryKeyColumns,
)
if !columns.IsWhitelist() {
wl = strmangle.SetComplement(wl, []string{"created_at"})
}
if len(wl) == 0 {
return 0, errors.New("models: unable to update fallback_passwords, could not build whitelist")
}
cache.query = fmt.Sprintf("UPDATE \"fallback_passwords\" SET %s WHERE %s",
strmangle.SetParamNames("\"", "\"", 0, wl),
strmangle.WhereClause("\"", "\"", 0, fallbackPasswordPrimaryKeyColumns),
)
cache.valueMapping, err = queries.BindMapping(fallbackPasswordType, fallbackPasswordMapping, append(wl, fallbackPasswordPrimaryKeyColumns...))
if err != nil {
return 0, err
}
}
values := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(o)), cache.valueMapping)
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, cache.query)
fmt.Fprintln(writer, values)
}
var result sql.Result
result, err = exec.ExecContext(ctx, cache.query, values...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to update fallback_passwords row")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by update for fallback_passwords")
}
if !cached {
fallbackPasswordUpdateCacheMut.Lock()
fallbackPasswordUpdateCache[key] = cache
fallbackPasswordUpdateCacheMut.Unlock()
}
return rowsAff, o.doAfterUpdateHooks(ctx, exec)
}
// UpdateAll updates all rows with the specified column values.
func (q fallbackPasswordQuery) UpdateAll(ctx context.Context, exec boil.ContextExecutor, cols M) (int64, error) {
queries.SetUpdate(q.Query, cols)
result, err := q.Query.ExecContext(ctx, exec)
if err != nil {
return 0, errors.Wrap(err, "models: unable to update all for fallback_passwords")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: unable to retrieve rows affected for fallback_passwords")
}
return rowsAff, nil
}
// UpdateAll updates all rows with the specified column values, using an executor.
func (o FallbackPasswordSlice) UpdateAll(ctx context.Context, exec boil.ContextExecutor, cols M) (int64, error) {
ln := int64(len(o))
if ln == 0 {
return 0, nil
}
if len(cols) == 0 {
return 0, errors.New("models: update all requires at least one column argument")
}
colNames := make([]string, len(cols))
args := make([]interface{}, len(cols))
i := 0
for name, value := range cols {
colNames[i] = name
args[i] = value
i++
}
// Append all of the primary key values for each column
for _, obj := range o {
pkeyArgs := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(obj)), fallbackPasswordPrimaryKeyMapping)
args = append(args, pkeyArgs...)
}
sql := fmt.Sprintf("UPDATE \"fallback_passwords\" SET %s WHERE %s",
strmangle.SetParamNames("\"", "\"", 0, colNames),
strmangle.WhereClauseRepeated(string(dialect.LQ), string(dialect.RQ), 0, fallbackPasswordPrimaryKeyColumns, len(o)))
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, args...)
}
result, err := exec.ExecContext(ctx, sql, args...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to update all in fallbackPassword slice")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: unable to retrieve rows affected all in update all fallbackPassword")
}
return rowsAff, nil
}
// Delete deletes a single FallbackPassword record with an executor.
// Delete will match against the primary key column to find the record to delete.
func (o *FallbackPassword) Delete(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
if o == nil {
return 0, errors.New("models: no FallbackPassword provided for delete")
}
if err := o.doBeforeDeleteHooks(ctx, exec); err != nil {
return 0, err
}
args := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(o)), fallbackPasswordPrimaryKeyMapping)
sql := "DELETE FROM \"fallback_passwords\" WHERE \"id\"=?"
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, args...)
}
result, err := exec.ExecContext(ctx, sql, args...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to delete from fallback_passwords")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by delete for fallback_passwords")
}
if err := o.doAfterDeleteHooks(ctx, exec); err != nil {
return 0, err
}
return rowsAff, nil
}
// DeleteAll deletes all matching rows.
func (q fallbackPasswordQuery) DeleteAll(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
if q.Query == nil {
return 0, errors.New("models: no fallbackPasswordQuery provided for delete all")
}
queries.SetDelete(q.Query)
result, err := q.Query.ExecContext(ctx, exec)
if err != nil {
return 0, errors.Wrap(err, "models: unable to delete all from fallback_passwords")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by deleteall for fallback_passwords")
}
return rowsAff, nil
}
// DeleteAll deletes all rows in the slice, using an executor.
func (o FallbackPasswordSlice) DeleteAll(ctx context.Context, exec boil.ContextExecutor) (int64, error) {
if len(o) == 0 {
return 0, nil
}
if len(fallbackPasswordBeforeDeleteHooks) != 0 {
for _, obj := range o {
if err := obj.doBeforeDeleteHooks(ctx, exec); err != nil {
return 0, err
}
}
}
var args []interface{}
for _, obj := range o {
pkeyArgs := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(obj)), fallbackPasswordPrimaryKeyMapping)
args = append(args, pkeyArgs...)
}
sql := "DELETE FROM \"fallback_passwords\" WHERE " +
strmangle.WhereClauseRepeated(string(dialect.LQ), string(dialect.RQ), 0, fallbackPasswordPrimaryKeyColumns, len(o))
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, args)
}
result, err := exec.ExecContext(ctx, sql, args...)
if err != nil {
return 0, errors.Wrap(err, "models: unable to delete all from fallbackPassword slice")
}
rowsAff, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "models: failed to get rows affected by deleteall for fallback_passwords")
}
if len(fallbackPasswordAfterDeleteHooks) != 0 {
for _, obj := range o {
if err := obj.doAfterDeleteHooks(ctx, exec); err != nil {
return 0, err
}
}
}
return rowsAff, nil
}
// Reload refetches the object from the database
// using the primary keys with an executor.
func (o *FallbackPassword) Reload(ctx context.Context, exec boil.ContextExecutor) error {
ret, err := FindFallbackPassword(ctx, exec, o.ID)
if err != nil {
return err
}
*o = *ret
return nil
}
// ReloadAll refetches every row with matching primary key column values
// and overwrites the original object slice with the newly updated slice.
func (o *FallbackPasswordSlice) ReloadAll(ctx context.Context, exec boil.ContextExecutor) error {
if o == nil || len(*o) == 0 {
return nil
}
slice := FallbackPasswordSlice{}
var args []interface{}
for _, obj := range *o {
pkeyArgs := queries.ValuesFromMapping(reflect.Indirect(reflect.ValueOf(obj)), fallbackPasswordPrimaryKeyMapping)
args = append(args, pkeyArgs...)
}
sql := "SELECT \"fallback_passwords\".* FROM \"fallback_passwords\" WHERE " +
strmangle.WhereClauseRepeated(string(dialect.LQ), string(dialect.RQ), 0, fallbackPasswordPrimaryKeyColumns, len(*o))
q := queries.Raw(sql, args...)
err := q.Bind(ctx, exec, &slice)
if err != nil {
return errors.Wrap(err, "models: unable to reload all in FallbackPasswordSlice")
}
*o = slice
return nil
}
// FallbackPasswordExists checks if the FallbackPassword row exists.
func FallbackPasswordExists(ctx context.Context, exec boil.ContextExecutor, iD int64) (bool, error) {
var exists bool
sql := "select exists(select 1 from \"fallback_passwords\" where \"id\"=? limit 1)"
if boil.IsDebug(ctx) {
writer := boil.DebugWriterFrom(ctx)
fmt.Fprintln(writer, sql)
fmt.Fprintln(writer, iD)
}
row := exec.QueryRowContext(ctx, sql, iD)
err := row.Scan(&exists)
if err != nil {
return false, errors.Wrap(err, "models: unable to check if fallback_passwords exists")
}
return exists, nil
}

View File

@ -23,11 +23,11 @@ import (
// Invite is an object representing the database table. // Invite is an object representing the database table.
type Invite struct { type Invite struct {
ID int64 `boil:"id" json:"id" toml:"id" yaml:"id"` ID int64 `boil:"id" json:"id" toml:"id" yaml:"id"`
Token string `boil:"token" json:"token" toml:"token" yaml:"token"` HashedToken string `boil:"hashed_token" json:"hashed_token" toml:"hashed_token" yaml:"hashed_token"`
CreatedBy int64 `boil:"created_by" json:"created_by" toml:"created_by" yaml:"created_by"` CreatedBy int64 `boil:"created_by" json:"created_by" toml:"created_by" yaml:"created_by"`
CreatedAt time.Time `boil:"created_at" json:"created_at" toml:"created_at" yaml:"created_at"`
AliasSuggestion string `boil:"alias_suggestion" json:"alias_suggestion" toml:"alias_suggestion" yaml:"alias_suggestion"` AliasSuggestion string `boil:"alias_suggestion" json:"alias_suggestion" toml:"alias_suggestion" yaml:"alias_suggestion"`
Active bool `boil:"active" json:"active" toml:"active" yaml:"active"` Active bool `boil:"active" json:"active" toml:"active" yaml:"active"`
CreatedAt time.Time `boil:"created_at" json:"created_at" toml:"created_at" yaml:"created_at"`
R *inviteR `boil:"-" json:"-" toml:"-" yaml:"-"` R *inviteR `boil:"-" json:"-" toml:"-" yaml:"-"`
L inviteL `boil:"-" json:"-" toml:"-" yaml:"-"` L inviteL `boil:"-" json:"-" toml:"-" yaml:"-"`
@ -35,18 +35,18 @@ type Invite struct {
var InviteColumns = struct { var InviteColumns = struct {
ID string ID string
Token string HashedToken string
CreatedBy string CreatedBy string
CreatedAt string
AliasSuggestion string AliasSuggestion string
Active string Active string
CreatedAt string
}{ }{
ID: "id", ID: "id",
Token: "token", HashedToken: "hashed_token",
CreatedBy: "created_by", CreatedBy: "created_by",
CreatedAt: "created_at",
AliasSuggestion: "alias_suggestion", AliasSuggestion: "alias_suggestion",
Active: "active", Active: "active",
CreatedAt: "created_at",
} }
// Generated where // Generated where
@ -60,53 +60,32 @@ func (w whereHelperbool) LTE(x bool) qm.QueryMod { return qmhelper.Where(w.field
func (w whereHelperbool) GT(x bool) qm.QueryMod { return qmhelper.Where(w.field, qmhelper.GT, x) } func (w whereHelperbool) GT(x bool) qm.QueryMod { return qmhelper.Where(w.field, qmhelper.GT, x) }
func (w whereHelperbool) GTE(x bool) qm.QueryMod { return qmhelper.Where(w.field, qmhelper.GTE, x) } func (w whereHelperbool) GTE(x bool) qm.QueryMod { return qmhelper.Where(w.field, qmhelper.GTE, x) }
type whereHelpertime_Time struct{ field string }
func (w whereHelpertime_Time) EQ(x time.Time) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.EQ, x)
}
func (w whereHelpertime_Time) NEQ(x time.Time) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.NEQ, x)
}
func (w whereHelpertime_Time) LT(x time.Time) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.LT, x)
}
func (w whereHelpertime_Time) LTE(x time.Time) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.LTE, x)
}
func (w whereHelpertime_Time) GT(x time.Time) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.GT, x)
}
func (w whereHelpertime_Time) GTE(x time.Time) qm.QueryMod {
return qmhelper.Where(w.field, qmhelper.GTE, x)
}
var InviteWhere = struct { var InviteWhere = struct {
ID whereHelperint64 ID whereHelperint64
Token whereHelperstring HashedToken whereHelperstring
CreatedBy whereHelperint64 CreatedBy whereHelperint64
CreatedAt whereHelpertime_Time
AliasSuggestion whereHelperstring AliasSuggestion whereHelperstring
Active whereHelperbool Active whereHelperbool
CreatedAt whereHelpertime_Time
}{ }{
ID: whereHelperint64{field: "\"invites\".\"id\""}, ID: whereHelperint64{field: "\"invites\".\"id\""},
Token: whereHelperstring{field: "\"invites\".\"token\""}, HashedToken: whereHelperstring{field: "\"invites\".\"hashed_token\""},
CreatedBy: whereHelperint64{field: "\"invites\".\"created_by\""}, CreatedBy: whereHelperint64{field: "\"invites\".\"created_by\""},
CreatedAt: whereHelpertime_Time{field: "\"invites\".\"created_at\""},
AliasSuggestion: whereHelperstring{field: "\"invites\".\"alias_suggestion\""}, AliasSuggestion: whereHelperstring{field: "\"invites\".\"alias_suggestion\""},
Active: whereHelperbool{field: "\"invites\".\"active\""}, Active: whereHelperbool{field: "\"invites\".\"active\""},
CreatedAt: whereHelpertime_Time{field: "\"invites\".\"created_at\""},
} }
// InviteRels is where relationship names are stored. // InviteRels is where relationship names are stored.
var InviteRels = struct { var InviteRels = struct {
CreatedByAuthFallback string CreatedByMember string
}{ }{
CreatedByAuthFallback: "CreatedByAuthFallback", CreatedByMember: "CreatedByMember",
} }
// inviteR is where relationships are stored. // inviteR is where relationships are stored.
type inviteR struct { type inviteR struct {
CreatedByAuthFallback *AuthFallback `boil:"CreatedByAuthFallback" json:"CreatedByAuthFallback" toml:"CreatedByAuthFallback" yaml:"CreatedByAuthFallback"` CreatedByMember *Member `boil:"CreatedByMember" json:"CreatedByMember" toml:"CreatedByMember" yaml:"CreatedByMember"`
} }
// NewStruct creates a new relationship struct // NewStruct creates a new relationship struct
@ -118,9 +97,9 @@ func (*inviteR) NewStruct() *inviteR {
type inviteL struct{} type inviteL struct{}
var ( var (
inviteAllColumns = []string{"id", "token", "created_by", "alias_suggestion", "active", "created_at"} inviteAllColumns = []string{"id", "hashed_token", "created_by", "created_at", "alias_suggestion", "active"}
inviteColumnsWithoutDefault = []string{} inviteColumnsWithoutDefault = []string{}
inviteColumnsWithDefault = []string{"id", "token", "created_by", "alias_suggestion", "active", "created_at"} inviteColumnsWithDefault = []string{"id", "hashed_token", "created_by", "created_at", "alias_suggestion", "active"}
invitePrimaryKeyColumns = []string{"id"} invitePrimaryKeyColumns = []string{"id"}
) )
@ -399,23 +378,23 @@ func (q inviteQuery) Exists(ctx context.Context, exec boil.ContextExecutor) (boo
return count > 0, nil return count > 0, nil
} }
// CreatedByAuthFallback pointed to by the foreign key. // CreatedByMember pointed to by the foreign key.
func (o *Invite) CreatedByAuthFallback(mods ...qm.QueryMod) authFallbackQuery { func (o *Invite) CreatedByMember(mods ...qm.QueryMod) memberQuery {
queryMods := []qm.QueryMod{ queryMods := []qm.QueryMod{
qm.Where("\"id\" = ?", o.CreatedBy), qm.Where("\"id\" = ?", o.CreatedBy),
} }
queryMods = append(queryMods, mods...) queryMods = append(queryMods, mods...)
query := AuthFallbacks(queryMods...) query := Members(queryMods...)
queries.SetFrom(query.Query, "\"auth_fallback\"") queries.SetFrom(query.Query, "\"members\"")
return query return query
} }
// LoadCreatedByAuthFallback allows an eager lookup of values, cached into the // LoadCreatedByMember allows an eager lookup of values, cached into the
// loaded structs of the objects. This is for an N-1 relationship. // loaded structs of the objects. This is for an N-1 relationship.
func (inviteL) LoadCreatedByAuthFallback(ctx context.Context, e boil.ContextExecutor, singular bool, maybeInvite interface{}, mods queries.Applicator) error { func (inviteL) LoadCreatedByMember(ctx context.Context, e boil.ContextExecutor, singular bool, maybeInvite interface{}, mods queries.Applicator) error {
var slice []*Invite var slice []*Invite
var object *Invite var object *Invite
@ -455,8 +434,8 @@ func (inviteL) LoadCreatedByAuthFallback(ctx context.Context, e boil.ContextExec
} }
query := NewQuery( query := NewQuery(
qm.From(`auth_fallback`), qm.From(`members`),
qm.WhereIn(`auth_fallback.id in ?`, args...), qm.WhereIn(`members.id in ?`, args...),
) )
if mods != nil { if mods != nil {
mods.Apply(query) mods.Apply(query)
@ -464,19 +443,19 @@ func (inviteL) LoadCreatedByAuthFallback(ctx context.Context, e boil.ContextExec
results, err := query.QueryContext(ctx, e) results, err := query.QueryContext(ctx, e)
if err != nil { if err != nil {
return errors.Wrap(err, "failed to eager load AuthFallback") return errors.Wrap(err, "failed to eager load Member")
} }
var resultSlice []*AuthFallback var resultSlice []*Member
if err = queries.Bind(results, &resultSlice); err != nil { if err = queries.Bind(results, &resultSlice); err != nil {
return errors.Wrap(err, "failed to bind eager loaded slice AuthFallback") return errors.Wrap(err, "failed to bind eager loaded slice Member")
} }
if err = results.Close(); err != nil { if err = results.Close(); err != nil {
return errors.Wrap(err, "failed to close results of eager load for auth_fallback") return errors.Wrap(err, "failed to close results of eager load for members")
} }
if err = results.Err(); err != nil { if err = results.Err(); err != nil {
return errors.Wrap(err, "error occurred during iteration of eager loaded relations for auth_fallback") return errors.Wrap(err, "error occurred during iteration of eager loaded relations for members")
} }
if len(inviteAfterSelectHooks) != 0 { if len(inviteAfterSelectHooks) != 0 {
@ -493,9 +472,9 @@ func (inviteL) LoadCreatedByAuthFallback(ctx context.Context, e boil.ContextExec
if singular { if singular {
foreign := resultSlice[0] foreign := resultSlice[0]
object.R.CreatedByAuthFallback = foreign object.R.CreatedByMember = foreign
if foreign.R == nil { if foreign.R == nil {
foreign.R = &authFallbackR{} foreign.R = &memberR{}
} }
foreign.R.CreatedByInvites = append(foreign.R.CreatedByInvites, object) foreign.R.CreatedByInvites = append(foreign.R.CreatedByInvites, object)
return nil return nil
@ -504,9 +483,9 @@ func (inviteL) LoadCreatedByAuthFallback(ctx context.Context, e boil.ContextExec
for _, local := range slice { for _, local := range slice {
for _, foreign := range resultSlice { for _, foreign := range resultSlice {
if local.CreatedBy == foreign.ID { if local.CreatedBy == foreign.ID {
local.R.CreatedByAuthFallback = foreign local.R.CreatedByMember = foreign
if foreign.R == nil { if foreign.R == nil {
foreign.R = &authFallbackR{} foreign.R = &memberR{}
} }
foreign.R.CreatedByInvites = append(foreign.R.CreatedByInvites, local) foreign.R.CreatedByInvites = append(foreign.R.CreatedByInvites, local)
break break
@ -517,10 +496,10 @@ func (inviteL) LoadCreatedByAuthFallback(ctx context.Context, e boil.ContextExec
return nil return nil
} }
// SetCreatedByAuthFallback of the invite to the related item. // SetCreatedByMember of the invite to the related item.
// Sets o.R.CreatedByAuthFallback to related. // Sets o.R.CreatedByMember to related.
// Adds o to related.R.CreatedByInvites. // Adds o to related.R.CreatedByInvites.
func (o *Invite) SetCreatedByAuthFallback(ctx context.Context, exec boil.ContextExecutor, insert bool, related *AuthFallback) error { func (o *Invite) SetCreatedByMember(ctx context.Context, exec boil.ContextExecutor, insert bool, related *Member) error {
var err error var err error
if insert { if insert {
if err = related.Insert(ctx, exec, boil.Infer()); err != nil { if err = related.Insert(ctx, exec, boil.Infer()); err != nil {
@ -547,14 +526,14 @@ func (o *Invite) SetCreatedByAuthFallback(ctx context.Context, exec boil.Context
o.CreatedBy = related.ID o.CreatedBy = related.ID
if o.R == nil { if o.R == nil {
o.R = &inviteR{ o.R = &inviteR{
CreatedByAuthFallback: related, CreatedByMember: related,
} }
} else { } else {
o.R.CreatedByAuthFallback = related o.R.CreatedByMember = related
} }
if related.R == nil { if related.R == nil {
related.R = &authFallbackR{ related.R = &memberR{
CreatedByInvites: InviteSlice{o}, CreatedByInvites: InviteSlice{o},
} }
} else { } else {

File diff suppressed because it is too large Load Diff

View File

@ -33,16 +33,16 @@ import (
type Database struct { type Database struct {
db *sql.DB db *sql.DB
AuthWithSSB roomdb.AuthWithSSBService
AuthFallback roomdb.AuthFallbackService AuthFallback roomdb.AuthFallbackService
AllowList roomdb.AllowListService Members Members
Aliases roomdb.AliasService Aliases Aliases
PinnedNotices roomdb.PinnedNoticesService PinnedNotices PinnedNotices
Notices roomdb.NoticesService Notices Notices
Invites roomdb.InviteService Invites Invites
// DeniedList Denied
} }
// Open looks for a database file 'fname' // Open looks for a database file 'fname'
@ -95,19 +95,21 @@ func Open(r repo.Interface) (*Database, error) {
} }
}() }()
al := &AllowList{db} ml := Members{db}
admindb := &Database{ admindb := &Database{
db: db, db: db,
AuthWithSSB: AuthWithSSB{db}, // DeniedList: DeniedList{db},
AuthFallback: AuthFallback{db},
AllowList: al,
Aliases: Aliases{db}, Aliases: Aliases{db},
AuthFallback: AuthFallback{db},
PinnedNotices: PinnedNotices{db}, PinnedNotices: PinnedNotices{db},
Notices: Notices{db}, Notices: Notices{db},
Members: ml,
Invites: Invites{ Invites: Invites{
db: db, db: db,
allowList: al, members: ml,
}, },
} }

View File

@ -1,6 +1,7 @@
package sqlite package sqlite
import ( import (
"bytes"
"context" "context"
"os" "os"
"path/filepath" "path/filepath"
@ -8,11 +9,26 @@ import (
_ "github.com/mattn/go-sqlite3" _ "github.com/mattn/go-sqlite3"
"github.com/ssb-ngi-pointer/go-ssb-room/internal/repo" "github.com/ssb-ngi-pointer/go-ssb-room/internal/repo"
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
refs "go.mindeco.de/ssb-refs"
) )
// verify the database opens and migrates successfully from zero state // verify the database opens and migrates successfully from zero state
func TestSimple(t *testing.T) { func TestSchema(t *testing.T) {
testRepo := filepath.Join("testrun", t.Name())
os.RemoveAll(testRepo)
tr := repo.New(testRepo)
db, err := Open(tr)
require.NoError(t, err)
err = db.Close()
require.NoError(t, err)
}
func TestBasic(t *testing.T) {
testRepo := filepath.Join("testrun", t.Name()) testRepo := filepath.Join("testrun", t.Name())
os.RemoveAll(testRepo) os.RemoveAll(testRepo)
@ -22,9 +38,13 @@ func TestSimple(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
ctx := context.Background() ctx := context.Background()
uid, err := db.AuthFallback.Create(ctx, "testUser", []byte("super-cheesy-password-12345")) feedA := refs.FeedRef{ID: bytes.Repeat([]byte("1312"), 8), Algo: refs.RefAlgoFeedSSB1}
memberID, err := db.Members.Add(ctx, "testNick", feedA, roomdb.RoleMember)
require.NoError(t, err)
require.NotEqual(t, 0, memberID)
err = db.AuthFallback.Create(ctx, memberID, "testLogin", []byte("super-cheesy-password-12345"))
require.NoError(t, err) require.NoError(t, err)
require.NotEqual(t, 0, uid)
err = db.Close() err = db.Close()
require.NoError(t, err) require.NoError(t, err)

View File

@ -1,6 +1,6 @@
[sqlite3] [sqlite3]
# go test in the admindb/sqlite package will create this # go test in the admindb/sqlite package will create this
dbname = "testrun/TestSimple/roomdb" dbname = "testrun/TestSchema/roomdb"
blacklist = ["gorp_migrations"] blacklist = ["gorp_migrations"]

View File

@ -26,12 +26,38 @@ type Alias struct {
Signature []byte Signature []byte
} }
// User holds all the information an authenticated user of the site has. // Member holds all the information an internal user of the room has.
type User struct { type Member struct {
ID int64 ID int64
Name string Nickname string // a common handle for the user (no-one want's to remember public keys)
Role Role
PubKey refs.FeedRef
} }
//go:generate stringer -type=Role
// Role describes the authorization level of an internal user (or member).
// Valid roles are Member, Moderator or Admin.
// The zero value Uknown is used to detect missing initializion while not falling into a bad default.
type Role uint
func (r Role) IsValid() error {
if r == RoleUnknown {
return errors.New("uknown member role")
}
if r > RoleAdmin {
return errors.New("invalid member role")
}
return nil
}
const (
RoleUnknown Role = iota
RoleMember
RoleModerator
RoleAdmin
)
type ErrAlreadyAdded struct { type ErrAlreadyAdded struct {
Ref refs.FeedRef Ref refs.FeedRef
} }
@ -45,21 +71,18 @@ func (aa ErrAlreadyAdded) Error() string {
type Invite struct { type Invite struct {
ID int64 ID int64
CreatedBy User CreatedBy Member
CreatedAt time.Time CreatedAt time.Time
AliasSuggestion string AliasSuggestion string
} }
// ListEntry values are returned by Allow- and DenyListServices // ListEntry values are returned by the DenyListServices
type ListEntry struct { type ListEntry struct {
ID int64 ID int64
PubKey refs.FeedRef PubKey refs.FeedRef
} }
// ListEntries is a slice of ListEntries
type ListEntries []ListEntry
// DBFeedRef wraps a feed reference and implements the SQL marshaling interfaces. // DBFeedRef wraps a feed reference and implements the SQL marshaling interfaces.
type DBFeedRef struct{ refs.FeedRef } type DBFeedRef struct{ refs.FeedRef }