configstore: fix linter errors
Fix errors reported by default golangci-lint linters
This commit is contained in:
parent
c5abbee3d8
commit
5643dd5dcd
|
@ -179,7 +179,6 @@ func (h *ActionHandler) CreateOrg(ctx context.Context, org *types.Organization)
|
||||||
|
|
||||||
func (h *ActionHandler) DeleteOrg(ctx context.Context, orgRef string) error {
|
func (h *ActionHandler) DeleteOrg(ctx context.Context, orgRef string) error {
|
||||||
var org *types.Organization
|
var org *types.Organization
|
||||||
var projects []*types.Project
|
|
||||||
|
|
||||||
var cgt *datamanager.ChangeGroupsUpdateToken
|
var cgt *datamanager.ChangeGroupsUpdateToken
|
||||||
// must do all the checks in a single transaction to avoid concurrent changes
|
// must do all the checks in a single transaction to avoid concurrent changes
|
||||||
|
@ -215,14 +214,6 @@ func (h *ActionHandler) DeleteOrg(ctx context.Context, orgRef string) error {
|
||||||
ID: org.ID,
|
ID: org.ID,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
// delete all org projects
|
|
||||||
for _, project := range projects {
|
|
||||||
actions = append(actions, &datamanager.Action{
|
|
||||||
ActionType: datamanager.ActionTypeDelete,
|
|
||||||
DataType: string(types.ConfigTypeProject),
|
|
||||||
ID: project.ID,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = h.dm.WriteWal(ctx, actions, cgt)
|
_, err = h.dm.WriteWal(ctx, actions, cgt)
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -77,22 +77,22 @@ func httpError(w http.ResponseWriter, err error) bool {
|
||||||
switch {
|
switch {
|
||||||
case errors.Is(err, &util.ErrBadRequest{}):
|
case errors.Is(err, &util.ErrBadRequest{}):
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
w.Write(resj)
|
_, _ = w.Write(resj)
|
||||||
case errors.Is(err, &util.ErrNotFound{}):
|
case errors.Is(err, &util.ErrNotFound{}):
|
||||||
w.WriteHeader(http.StatusNotFound)
|
w.WriteHeader(http.StatusNotFound)
|
||||||
w.Write(resj)
|
_, _ = w.Write(resj)
|
||||||
case errors.Is(err, &util.ErrForbidden{}):
|
case errors.Is(err, &util.ErrForbidden{}):
|
||||||
w.WriteHeader(http.StatusForbidden)
|
w.WriteHeader(http.StatusForbidden)
|
||||||
w.Write(resj)
|
_, _ = w.Write(resj)
|
||||||
case errors.Is(err, &util.ErrUnauthorized{}):
|
case errors.Is(err, &util.ErrUnauthorized{}):
|
||||||
w.WriteHeader(http.StatusUnauthorized)
|
w.WriteHeader(http.StatusUnauthorized)
|
||||||
w.Write(resj)
|
_, _ = w.Write(resj)
|
||||||
case errors.Is(err, &util.ErrInternal{}):
|
case errors.Is(err, &util.ErrInternal{}):
|
||||||
w.WriteHeader(http.StatusInternalServerError)
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
w.Write(resj)
|
_, _ = w.Write(resj)
|
||||||
default:
|
default:
|
||||||
w.WriteHeader(http.StatusInternalServerError)
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
w.Write(resj)
|
_, _ = w.Write(resj)
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,9 +66,8 @@ func (h *RemoteSourceHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
||||||
}
|
}
|
||||||
|
|
||||||
type CreateRemoteSourceHandler struct {
|
type CreateRemoteSourceHandler struct {
|
||||||
log *zap.SugaredLogger
|
log *zap.SugaredLogger
|
||||||
ah *action.ActionHandler
|
ah *action.ActionHandler
|
||||||
readDB *readdb.ReadDB
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewCreateRemoteSourceHandler(logger *zap.Logger, ah *action.ActionHandler) *CreateRemoteSourceHandler {
|
func NewCreateRemoteSourceHandler(logger *zap.Logger, ah *action.ActionHandler) *CreateRemoteSourceHandler {
|
||||||
|
@ -97,9 +96,8 @@ func (h *CreateRemoteSourceHandler) ServeHTTP(w http.ResponseWriter, r *http.Req
|
||||||
}
|
}
|
||||||
|
|
||||||
type UpdateRemoteSourceHandler struct {
|
type UpdateRemoteSourceHandler struct {
|
||||||
log *zap.SugaredLogger
|
log *zap.SugaredLogger
|
||||||
ah *action.ActionHandler
|
ah *action.ActionHandler
|
||||||
readDB *readdb.ReadDB
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewUpdateRemoteSourceHandler(logger *zap.Logger, ah *action.ActionHandler) *UpdateRemoteSourceHandler {
|
func NewUpdateRemoteSourceHandler(logger *zap.Logger, ah *action.ActionHandler) *UpdateRemoteSourceHandler {
|
||||||
|
|
|
@ -117,9 +117,8 @@ func (h *SecretsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type CreateSecretHandler struct {
|
type CreateSecretHandler struct {
|
||||||
log *zap.SugaredLogger
|
log *zap.SugaredLogger
|
||||||
ah *action.ActionHandler
|
ah *action.ActionHandler
|
||||||
readDB *readdb.ReadDB
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewCreateSecretHandler(logger *zap.Logger, ah *action.ActionHandler) *CreateSecretHandler {
|
func NewCreateSecretHandler(logger *zap.Logger, ah *action.ActionHandler) *CreateSecretHandler {
|
||||||
|
|
|
@ -90,9 +90,8 @@ func (h *VariablesHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type CreateVariableHandler struct {
|
type CreateVariableHandler struct {
|
||||||
log *zap.SugaredLogger
|
log *zap.SugaredLogger
|
||||||
ah *action.ActionHandler
|
ah *action.ActionHandler
|
||||||
readDB *readdb.ReadDB
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewCreateVariableHandler(logger *zap.Logger, ah *action.ActionHandler) *CreateVariableHandler {
|
func NewCreateVariableHandler(logger *zap.Logger, ah *action.ActionHandler) *CreateVariableHandler {
|
||||||
|
|
|
@ -21,10 +21,6 @@ import (
|
||||||
uuid "github.com/satori/go.uuid"
|
uuid "github.com/satori/go.uuid"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
etcdWalsMinRevisionRange = 100
|
|
||||||
)
|
|
||||||
|
|
||||||
type RefType int
|
type RefType int
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -43,13 +43,12 @@ var logger = slog.New(level)
|
||||||
var log = logger.Sugar()
|
var log = logger.Sugar()
|
||||||
|
|
||||||
type Configstore struct {
|
type Configstore struct {
|
||||||
c *config.Configstore
|
c *config.Configstore
|
||||||
e *etcd.Store
|
e *etcd.Store
|
||||||
dm *datamanager.DataManager
|
dm *datamanager.DataManager
|
||||||
readDB *readdb.ReadDB
|
readDB *readdb.ReadDB
|
||||||
ost *objectstorage.ObjStorage
|
ost *objectstorage.ObjStorage
|
||||||
ah *action.ActionHandler
|
ah *action.ActionHandler
|
||||||
listenAddress string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewConfigstore(ctx context.Context, c *config.Configstore) (*Configstore, error) {
|
func NewConfigstore(ctx context.Context, c *config.Configstore) (*Configstore, error) {
|
||||||
|
@ -115,15 +114,10 @@ func (s *Configstore) Run(ctx context.Context) error {
|
||||||
|
|
||||||
go func() { errCh <- s.readDB.Run(ctx) }()
|
go func() { errCh <- s.readDB.Run(ctx) }()
|
||||||
|
|
||||||
// noop coors handler
|
|
||||||
corsHandler := func(h http.Handler) http.Handler {
|
|
||||||
return h
|
|
||||||
}
|
|
||||||
|
|
||||||
corsAllowedMethodsOptions := ghandlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "DELETE"})
|
corsAllowedMethodsOptions := ghandlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "DELETE"})
|
||||||
corsAllowedHeadersOptions := ghandlers.AllowedHeaders([]string{"Accept", "Accept-Encoding", "Authorization", "Content-Length", "Content-Type", "X-CSRF-Token", "Authorization"})
|
corsAllowedHeadersOptions := ghandlers.AllowedHeaders([]string{"Accept", "Accept-Encoding", "Authorization", "Content-Length", "Content-Type", "X-CSRF-Token", "Authorization"})
|
||||||
corsAllowedOriginsOptions := ghandlers.AllowedOrigins([]string{"*"})
|
corsAllowedOriginsOptions := ghandlers.AllowedOrigins([]string{"*"})
|
||||||
corsHandler = ghandlers.CORS(corsAllowedMethodsOptions, corsAllowedHeadersOptions, corsAllowedOriginsOptions)
|
corsHandler := ghandlers.CORS(corsAllowedMethodsOptions, corsAllowedHeadersOptions, corsAllowedOriginsOptions)
|
||||||
|
|
||||||
projectGroupHandler := api.NewProjectGroupHandler(logger, s.readDB)
|
projectGroupHandler := api.NewProjectGroupHandler(logger, s.readDB)
|
||||||
projectGroupSubgroupsHandler := api.NewProjectGroupSubgroupsHandler(logger, s.ah, s.readDB)
|
projectGroupSubgroupsHandler := api.NewProjectGroupSubgroupsHandler(logger, s.ah, s.readDB)
|
||||||
|
|
|
@ -51,12 +51,15 @@ func setupEtcd(t *testing.T, dir string) *testutil.TestEmbeddedEtcd {
|
||||||
|
|
||||||
func shutdownEtcd(tetcd *testutil.TestEmbeddedEtcd) {
|
func shutdownEtcd(tetcd *testutil.TestEmbeddedEtcd) {
|
||||||
if tetcd.Etcd != nil {
|
if tetcd.Etcd != nil {
|
||||||
tetcd.Kill()
|
_ = tetcd.Kill()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupConfigstore(t *testing.T, ctx context.Context, dir string) (*Configstore, *testutil.TestEmbeddedEtcd) {
|
func setupConfigstore(t *testing.T, ctx context.Context, dir string) (*Configstore, *testutil.TestEmbeddedEtcd) {
|
||||||
etcdDir, err := ioutil.TempDir(dir, "etcd")
|
etcdDir, err := ioutil.TempDir(dir, "etcd")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected err: %v", err)
|
||||||
|
}
|
||||||
tetcd := setupEtcd(t, etcdDir)
|
tetcd := setupEtcd(t, etcdDir)
|
||||||
|
|
||||||
listenAddress, port, err := testutil.GetFreePort(true, false)
|
listenAddress, port, err := testutil.GetFreePort(true, false)
|
||||||
|
@ -65,7 +68,13 @@ func setupConfigstore(t *testing.T, ctx context.Context, dir string) (*Configsto
|
||||||
}
|
}
|
||||||
|
|
||||||
ostDir, err := ioutil.TempDir(dir, "ost")
|
ostDir, err := ioutil.TempDir(dir, "ost")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected err: %v", err)
|
||||||
|
}
|
||||||
csDir, err := ioutil.TempDir(dir, "cs")
|
csDir, err := ioutil.TempDir(dir, "cs")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected err: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
baseConfig := config.Configstore{
|
baseConfig := config.Configstore{
|
||||||
Etcd: config.Etcd{
|
Etcd: config.Etcd{
|
||||||
|
@ -117,6 +126,9 @@ func TestResync(t *testing.T) {
|
||||||
defer os.RemoveAll(dir)
|
defer os.RemoveAll(dir)
|
||||||
|
|
||||||
etcdDir, err := ioutil.TempDir(dir, "etcd")
|
etcdDir, err := ioutil.TempDir(dir, "etcd")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected err: %v", err)
|
||||||
|
}
|
||||||
tetcd := setupEtcd(t, etcdDir)
|
tetcd := setupEtcd(t, etcdDir)
|
||||||
defer shutdownEtcd(tetcd)
|
defer shutdownEtcd(tetcd)
|
||||||
|
|
||||||
|
@ -136,9 +148,21 @@ func TestResync(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
ostDir, err := ioutil.TempDir(dir, "ost")
|
ostDir, err := ioutil.TempDir(dir, "ost")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected err: %v", err)
|
||||||
|
}
|
||||||
csDir1, err := ioutil.TempDir(dir, "cs1")
|
csDir1, err := ioutil.TempDir(dir, "cs1")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected err: %v", err)
|
||||||
|
}
|
||||||
csDir2, err := ioutil.TempDir(dir, "cs2")
|
csDir2, err := ioutil.TempDir(dir, "cs2")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected err: %v", err)
|
||||||
|
}
|
||||||
csDir3, err := ioutil.TempDir(dir, "cs3")
|
csDir3, err := ioutil.TempDir(dir, "cs3")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected err: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
baseConfig := config.Configstore{
|
baseConfig := config.Configstore{
|
||||||
Etcd: config.Etcd{
|
Etcd: config.Etcd{
|
||||||
|
@ -171,17 +195,9 @@ func TestResync(t *testing.T) {
|
||||||
ctx2, cancel2 := context.WithCancel(context.Background())
|
ctx2, cancel2 := context.WithCancel(context.Background())
|
||||||
|
|
||||||
t.Logf("starting cs1")
|
t.Logf("starting cs1")
|
||||||
go func() {
|
go func() { _ = cs1.Run(ctx1) }()
|
||||||
if err := cs1.Run(ctx1); err != nil {
|
|
||||||
t.Fatalf("err: %v", err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
t.Logf("starting cs2")
|
t.Logf("starting cs2")
|
||||||
go func() {
|
go func() { _ = cs2.Run(ctx2) }()
|
||||||
if err := cs2.Run(ctx2); err != nil {
|
|
||||||
t.Fatalf("err: %v", err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
time.Sleep(1 * time.Second)
|
time.Sleep(1 * time.Second)
|
||||||
|
|
||||||
|
@ -221,7 +237,7 @@ func TestResync(t *testing.T) {
|
||||||
}
|
}
|
||||||
log.Infof("starting cs2")
|
log.Infof("starting cs2")
|
||||||
ctx2 = context.Background()
|
ctx2 = context.Background()
|
||||||
go cs2.Run(ctx2)
|
go func() { _ = cs2.Run(ctx2) }()
|
||||||
|
|
||||||
time.Sleep(5 * time.Second)
|
time.Sleep(5 * time.Second)
|
||||||
|
|
||||||
|
@ -254,7 +270,7 @@ func TestResync(t *testing.T) {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
ctx3 := context.Background()
|
ctx3 := context.Background()
|
||||||
go cs3.Run(ctx3)
|
go func() { _ = cs3.Run(ctx3) }()
|
||||||
|
|
||||||
time.Sleep(5 * time.Second)
|
time.Sleep(5 * time.Second)
|
||||||
|
|
||||||
|
@ -305,9 +321,7 @@ func TestUser(t *testing.T) {
|
||||||
|
|
||||||
t.Logf("starting cs")
|
t.Logf("starting cs")
|
||||||
go func() {
|
go func() {
|
||||||
if err := cs.Run(ctx); err != nil {
|
_ = cs.Run(ctx)
|
||||||
t.Fatalf("err: %v", err)
|
|
||||||
}
|
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// TODO(sgotti) change the sleep with a real check that all is ready
|
// TODO(sgotti) change the sleep with a real check that all is ready
|
||||||
|
@ -342,7 +356,7 @@ func TestUser(t *testing.T) {
|
||||||
wg := sync.WaitGroup{}
|
wg := sync.WaitGroup{}
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go cs.ah.CreateUser(ctx, &action.CreateUserRequest{UserName: "user02"})
|
go func() { _, _ = cs.ah.CreateUser(ctx, &action.CreateUserRequest{UserName: "user02"}) }()
|
||||||
wg.Done()
|
wg.Done()
|
||||||
}
|
}
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
@ -374,9 +388,7 @@ func TestProjectGroupsAndProjects(t *testing.T) {
|
||||||
|
|
||||||
t.Logf("starting cs")
|
t.Logf("starting cs")
|
||||||
go func() {
|
go func() {
|
||||||
if err := cs.Run(ctx); err != nil {
|
_ = cs.Run(ctx)
|
||||||
t.Fatalf("err: %v", err)
|
|
||||||
}
|
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// TODO(sgotti) change the sleep with a real check that all is ready
|
// TODO(sgotti) change the sleep with a real check that all is ready
|
||||||
|
@ -489,7 +501,9 @@ func TestProjectGroupsAndProjects(t *testing.T) {
|
||||||
wg := sync.WaitGroup{}
|
wg := sync.WaitGroup{}
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go cs.ah.CreateProject(ctx, &types.Project{Name: "project02", Parent: types.Parent{Type: types.ConfigTypeProjectGroup, ID: path.Join("user", user.Name)}, Visibility: types.VisibilityPublic, RemoteRepositoryConfigType: types.RemoteRepositoryConfigTypeManual})
|
go func() {
|
||||||
|
_, _ = cs.ah.CreateProject(ctx, &types.Project{Name: "project02", Parent: types.Parent{Type: types.ConfigTypeProjectGroup, ID: path.Join("user", user.Name)}, Visibility: types.VisibilityPublic, RemoteRepositoryConfigType: types.RemoteRepositoryConfigTypeManual})
|
||||||
|
}()
|
||||||
wg.Done()
|
wg.Done()
|
||||||
}
|
}
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
@ -521,9 +535,7 @@ func TestProjectGroupDelete(t *testing.T) {
|
||||||
|
|
||||||
t.Logf("starting cs")
|
t.Logf("starting cs")
|
||||||
go func() {
|
go func() {
|
||||||
if err := cs.Run(ctx); err != nil {
|
_ = cs.Run(ctx)
|
||||||
t.Fatalf("err: %v", err)
|
|
||||||
}
|
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// TODO(sgotti) change the sleep with a real check that all is ready
|
// TODO(sgotti) change the sleep with a real check that all is ready
|
||||||
|
@ -661,11 +673,7 @@ func TestOrgMembers(t *testing.T) {
|
||||||
defer shutdownEtcd(tetcd)
|
defer shutdownEtcd(tetcd)
|
||||||
|
|
||||||
t.Logf("starting cs")
|
t.Logf("starting cs")
|
||||||
go func() {
|
go func() { _ = cs.Run(ctx) }()
|
||||||
if err := cs.Run(ctx); err != nil {
|
|
||||||
t.Fatalf("err: %v", err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
// TODO(sgotti) change the sleep with a real check that all is ready
|
// TODO(sgotti) change the sleep with a real check that all is ready
|
||||||
time.Sleep(2 * time.Second)
|
time.Sleep(2 * time.Second)
|
||||||
|
|
|
@ -49,7 +49,7 @@ func (r *ReadDB) insertProjectGroup(tx *db.Tx, data []byte) error {
|
||||||
return errors.Errorf("failed to build query: %w", err)
|
return errors.Errorf("failed to build query: %w", err)
|
||||||
}
|
}
|
||||||
if _, err = tx.Exec(q, args...); err != nil {
|
if _, err = tx.Exec(q, args...); err != nil {
|
||||||
errors.Errorf("failed to insert group: %w", err)
|
return errors.Errorf("failed to insert group: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -21,7 +21,6 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sync"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"agola.io/agola/internal/datamanager"
|
"agola.io/agola/internal/datamanager"
|
||||||
|
@ -61,7 +60,6 @@ type ReadDB struct {
|
||||||
dm *datamanager.DataManager
|
dm *datamanager.DataManager
|
||||||
|
|
||||||
Initialized bool
|
Initialized bool
|
||||||
initMutex sync.Mutex
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewReadDB(ctx context.Context, logger *zap.Logger, dataDir string, e *etcd.Store, ost *objectstorage.ObjStorage, dm *datamanager.DataManager) (*ReadDB, error) {
|
func NewReadDB(ctx context.Context, logger *zap.Logger, dataDir string, e *etcd.Store, ost *objectstorage.ObjStorage, dm *datamanager.DataManager) (*ReadDB, error) {
|
||||||
|
@ -407,9 +405,6 @@ func (r *ReadDB) Run(ctx context.Context) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
if !r.Initialized {
|
|
||||||
r.Initialize(ctx)
|
|
||||||
}
|
|
||||||
if err := r.HandleEvents(ctx); err != nil {
|
if err := r.HandleEvents(ctx); err != nil {
|
||||||
r.log.Errorf("handleevents err: %+v", err)
|
r.log.Errorf("handleevents err: %+v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,13 +31,13 @@ var (
|
||||||
userSelect = sb.Select("user.id", "user.data").From("user")
|
userSelect = sb.Select("user.id", "user.data").From("user")
|
||||||
userInsert = sb.Insert("user").Columns("id", "name", "data")
|
userInsert = sb.Insert("user").Columns("id", "name", "data")
|
||||||
|
|
||||||
linkedaccountSelect = sb.Select("id", "data").From("linkedaccount")
|
//linkedaccountSelect = sb.Select("id", "data").From("linkedaccount")
|
||||||
linkedaccountInsert = sb.Insert("linkedaccount").Columns("id", "name", "data")
|
//linkedaccountInsert = sb.Insert("linkedaccount").Columns("id", "name", "data")
|
||||||
linkedaccountuserInsert = sb.Insert("linkedaccount_user").Columns("id", "remotesourceid", "userid", "remoteuserid")
|
linkedaccountuserInsert = sb.Insert("linkedaccount_user").Columns("id", "remotesourceid", "userid", "remoteuserid")
|
||||||
linkedaccountuserSelect = sb.Select("id", "userid").From("linkedaccount_user")
|
//linkedaccountuserSelect = sb.Select("id", "userid").From("linkedaccount_user")
|
||||||
linkedaccountprojectInsert = sb.Insert("linkedaccount_project").Columns("id", "userid")
|
//linkedaccountprojectInsert = sb.Insert("linkedaccount_project").Columns("id", "userid")
|
||||||
|
|
||||||
usertokenSelect = sb.Select("tokenvalue", "userid").From("user_token")
|
//usertokenSelect = sb.Select("tokenvalue", "userid").From("user_token")
|
||||||
usertokenInsert = sb.Insert("user_token").Columns("tokenvalue", "userid")
|
usertokenInsert = sb.Insert("user_token").Columns("tokenvalue", "userid")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -131,14 +131,6 @@ func (r *ReadDB) deleteUserLinkedAccount(tx *db.Tx, id string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *ReadDB) deleteAllUserTokens(tx *db.Tx, userID string) error {
|
|
||||||
// poor man insert or update...
|
|
||||||
if _, err := tx.Exec("delete from user_token where userid = $1", userID); err != nil {
|
|
||||||
return errors.Errorf("failed to delete user_token: %w", err)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *ReadDB) deleteUserToken(tx *db.Tx, tokenValue string) error {
|
func (r *ReadDB) deleteUserToken(tx *db.Tx, tokenValue string) error {
|
||||||
// poor man insert or update...
|
// poor man insert or update...
|
||||||
if _, err := tx.Exec("delete from user_token where tokenvalue = $1", tokenValue); err != nil {
|
if _, err := tx.Exec("delete from user_token where tokenvalue = $1", tokenValue); err != nil {
|
||||||
|
@ -356,44 +348,3 @@ func scanUsers(rows *sql.Rows) ([]*types.User, []string, error) {
|
||||||
}
|
}
|
||||||
return users, ids, nil
|
return users, ids, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type LinkedAccountUser struct {
|
|
||||||
ID string
|
|
||||||
UserID string
|
|
||||||
}
|
|
||||||
|
|
||||||
func fetchLinkedAccounts(tx *db.Tx, q string, args ...interface{}) ([]*LinkedAccountUser, error) {
|
|
||||||
rows, err := tx.Query(q, args...)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
defer rows.Close()
|
|
||||||
linkedAccounts, err := scanLinkedAccounts(rows)
|
|
||||||
|
|
||||||
return linkedAccounts, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func scanLinkedAccount(rows *sql.Rows, additionalFields ...interface{}) (*LinkedAccountUser, error) {
|
|
||||||
var id, userid string
|
|
||||||
if err := rows.Scan(&id, &userid); err != nil {
|
|
||||||
return nil, errors.Errorf("failed to scan rows: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return &LinkedAccountUser{ID: id, UserID: userid}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func scanLinkedAccounts(rows *sql.Rows) ([]*LinkedAccountUser, error) {
|
|
||||||
linkedAccounts := []*LinkedAccountUser{}
|
|
||||||
for rows.Next() {
|
|
||||||
linkedAccount, err := scanLinkedAccount(rows)
|
|
||||||
if err != nil {
|
|
||||||
rows.Close()
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
linkedAccounts = append(linkedAccounts, linkedAccount)
|
|
||||||
}
|
|
||||||
if err := rows.Err(); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return linkedAccounts, nil
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue