mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-13 22:57:37 +00:00
fixup! fixup! fixup! fixup! Merge branch 'main' into import_export_merge
This commit is contained in:
@@ -157,15 +157,16 @@ func (c *MockPoolCloseCall) DoAndReturn(f func(context.Context) error) *MockPool
|
||||
}
|
||||
|
||||
// Exec mocks base method.
|
||||
func (m *MockPool) Exec(arg0 context.Context, arg1 string, arg2 ...any) error {
|
||||
func (m *MockPool) Exec(arg0 context.Context, arg1 string, arg2 ...any) (int64, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []any{arg0, arg1}
|
||||
for _, a := range arg2 {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "Exec", varargs...)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
ret0, _ := ret[0].(int64)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Exec indicates an expected call of Exec.
|
||||
@@ -182,19 +183,19 @@ type MockPoolExecCall struct {
|
||||
}
|
||||
|
||||
// Return rewrite *gomock.Call.Return
|
||||
func (c *MockPoolExecCall) Return(arg0 error) *MockPoolExecCall {
|
||||
c.Call = c.Call.Return(arg0)
|
||||
func (c *MockPoolExecCall) Return(arg0 int64, arg1 error) *MockPoolExecCall {
|
||||
c.Call = c.Call.Return(arg0, arg1)
|
||||
return c
|
||||
}
|
||||
|
||||
// Do rewrite *gomock.Call.Do
|
||||
func (c *MockPoolExecCall) Do(f func(context.Context, string, ...any) error) *MockPoolExecCall {
|
||||
func (c *MockPoolExecCall) Do(f func(context.Context, string, ...any) (int64, error)) *MockPoolExecCall {
|
||||
c.Call = c.Call.Do(f)
|
||||
return c
|
||||
}
|
||||
|
||||
// DoAndReturn rewrite *gomock.Call.DoAndReturn
|
||||
func (c *MockPoolExecCall) DoAndReturn(f func(context.Context, string, ...any) error) *MockPoolExecCall {
|
||||
func (c *MockPoolExecCall) DoAndReturn(f func(context.Context, string, ...any) (int64, error)) *MockPoolExecCall {
|
||||
c.Call = c.Call.DoAndReturn(f)
|
||||
return c
|
||||
}
|
||||
@@ -387,15 +388,16 @@ func (c *MockClientBeginCall) DoAndReturn(f func(context.Context, *database.Tran
|
||||
}
|
||||
|
||||
// Exec mocks base method.
|
||||
func (m *MockClient) Exec(arg0 context.Context, arg1 string, arg2 ...any) error {
|
||||
func (m *MockClient) Exec(arg0 context.Context, arg1 string, arg2 ...any) (int64, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []any{arg0, arg1}
|
||||
for _, a := range arg2 {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "Exec", varargs...)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
ret0, _ := ret[0].(int64)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Exec indicates an expected call of Exec.
|
||||
@@ -412,19 +414,19 @@ type MockClientExecCall struct {
|
||||
}
|
||||
|
||||
// Return rewrite *gomock.Call.Return
|
||||
func (c *MockClientExecCall) Return(arg0 error) *MockClientExecCall {
|
||||
c.Call = c.Call.Return(arg0)
|
||||
func (c *MockClientExecCall) Return(arg0 int64, arg1 error) *MockClientExecCall {
|
||||
c.Call = c.Call.Return(arg0, arg1)
|
||||
return c
|
||||
}
|
||||
|
||||
// Do rewrite *gomock.Call.Do
|
||||
func (c *MockClientExecCall) Do(f func(context.Context, string, ...any) error) *MockClientExecCall {
|
||||
func (c *MockClientExecCall) Do(f func(context.Context, string, ...any) (int64, error)) *MockClientExecCall {
|
||||
c.Call = c.Call.Do(f)
|
||||
return c
|
||||
}
|
||||
|
||||
// DoAndReturn rewrite *gomock.Call.DoAndReturn
|
||||
func (c *MockClientExecCall) DoAndReturn(f func(context.Context, string, ...any) error) *MockClientExecCall {
|
||||
func (c *MockClientExecCall) DoAndReturn(f func(context.Context, string, ...any) (int64, error)) *MockClientExecCall {
|
||||
c.Call = c.Call.DoAndReturn(f)
|
||||
return c
|
||||
}
|
||||
@@ -975,15 +977,16 @@ func (c *MockTransactionEndCall) DoAndReturn(f func(context.Context, error) erro
|
||||
}
|
||||
|
||||
// Exec mocks base method.
|
||||
func (m *MockTransaction) Exec(arg0 context.Context, arg1 string, arg2 ...any) error {
|
||||
func (m *MockTransaction) Exec(arg0 context.Context, arg1 string, arg2 ...any) (int64, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []any{arg0, arg1}
|
||||
for _, a := range arg2 {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "Exec", varargs...)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
ret0, _ := ret[0].(int64)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Exec indicates an expected call of Exec.
|
||||
@@ -1000,19 +1003,19 @@ type MockTransactionExecCall struct {
|
||||
}
|
||||
|
||||
// Return rewrite *gomock.Call.Return
|
||||
func (c *MockTransactionExecCall) Return(arg0 error) *MockTransactionExecCall {
|
||||
c.Call = c.Call.Return(arg0)
|
||||
func (c *MockTransactionExecCall) Return(arg0 int64, arg1 error) *MockTransactionExecCall {
|
||||
c.Call = c.Call.Return(arg0, arg1)
|
||||
return c
|
||||
}
|
||||
|
||||
// Do rewrite *gomock.Call.Do
|
||||
func (c *MockTransactionExecCall) Do(f func(context.Context, string, ...any) error) *MockTransactionExecCall {
|
||||
func (c *MockTransactionExecCall) Do(f func(context.Context, string, ...any) (int64, error)) *MockTransactionExecCall {
|
||||
c.Call = c.Call.Do(f)
|
||||
return c
|
||||
}
|
||||
|
||||
// DoAndReturn rewrite *gomock.Call.DoAndReturn
|
||||
func (c *MockTransactionExecCall) DoAndReturn(f func(context.Context, string, ...any) error) *MockTransactionExecCall {
|
||||
func (c *MockTransactionExecCall) DoAndReturn(f func(context.Context, string, ...any) (int64, error)) *MockTransactionExecCall {
|
||||
c.Call = c.Call.DoAndReturn(f)
|
||||
return c
|
||||
}
|
||||
|
@@ -33,30 +33,30 @@ const queryInstanceStmt = `SELECT id, name, default_org_id, iam_project_id, cons
|
||||
|
||||
// Get implements [domain.InstanceRepository].
|
||||
func (i *instance) Get(ctx context.Context, opts ...database.Condition) (*domain.Instance, error) {
|
||||
i.builder = database.StatementBuilder{}
|
||||
builder := database.StatementBuilder{}
|
||||
|
||||
i.builder.WriteString(queryInstanceStmt)
|
||||
builder.WriteString(queryInstanceStmt)
|
||||
|
||||
// return only non deleted isntances
|
||||
opts = append(opts, database.IsNull(i.DeletedAtColumn()))
|
||||
andCondition := database.And(opts...)
|
||||
andCondition.Write(&i.builder)
|
||||
andCondition.Write(&builder)
|
||||
|
||||
return scanInstance(i.client.QueryRow(ctx, i.builder.String(), i.builder.Args()...))
|
||||
return scanInstance(i.client.QueryRow(ctx, builder.String(), builder.Args()...))
|
||||
}
|
||||
|
||||
// List implements [domain.InstanceRepository].
|
||||
func (i *instance) List(ctx context.Context, opts ...database.Condition) ([]*domain.Instance, error) {
|
||||
i.builder = database.StatementBuilder{}
|
||||
builder := database.StatementBuilder{}
|
||||
|
||||
i.builder.WriteString(queryInstanceStmt)
|
||||
builder.WriteString(queryInstanceStmt)
|
||||
|
||||
// return only non deleted isntances
|
||||
opts = append(opts, database.IsNull(i.DeletedAtColumn()))
|
||||
andCondition := database.And(opts...)
|
||||
andCondition.Write(&i.builder)
|
||||
andCondition.Write(&builder)
|
||||
|
||||
rows, err := i.client.Query(ctx, i.builder.String(), i.builder.Args()...)
|
||||
rows, err := i.client.Query(ctx, builder.String(), builder.Args()...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -71,11 +71,11 @@ const createInstanceStmt = `INSERT INTO zitadel.instances (id, name, default_org
|
||||
|
||||
// Create implements [domain.InstanceRepository].
|
||||
func (i *instance) Create(ctx context.Context, instance *domain.Instance) error {
|
||||
i.builder = database.StatementBuilder{}
|
||||
i.builder.AppendArgs(instance.ID, instance.Name, instance.DefaultOrgID, instance.IAMProjectID, instance.ConsoleClientID, instance.ConsoleAppID, instance.DefaultLanguage)
|
||||
i.builder.WriteString(createInstanceStmt)
|
||||
builder := database.StatementBuilder{}
|
||||
builder.AppendArgs(instance.ID, instance.Name, instance.DefaultOrgID, instance.IAMProjectID, instance.ConsoleClientID, instance.ConsoleAppID, instance.DefaultLanguage)
|
||||
builder.WriteString(createInstanceStmt)
|
||||
|
||||
err := i.client.QueryRow(ctx, i.builder.String(), i.builder.Args()...).Scan(&instance.CreatedAt, &instance.UpdatedAt)
|
||||
err := i.client.QueryRow(ctx, builder.String(), builder.Args()...).Scan(&instance.CreatedAt, &instance.UpdatedAt)
|
||||
if err != nil {
|
||||
var pgErr *pgconn.PgError
|
||||
if errors.As(err, &pgErr) {
|
||||
@@ -101,14 +101,14 @@ func (i *instance) Create(ctx context.Context, instance *domain.Instance) error
|
||||
|
||||
// Update implements [domain.InstanceRepository].
|
||||
func (i instance) Update(ctx context.Context, condition database.Condition, changes ...database.Change) (int64, error) {
|
||||
i.builder = database.StatementBuilder{}
|
||||
i.builder.WriteString(`UPDATE zitadel.instances SET `)
|
||||
database.Changes(changes).Write(&i.builder)
|
||||
i.writeCondition(condition)
|
||||
builder := database.StatementBuilder{}
|
||||
builder.WriteString(`UPDATE zitadel.instances SET `)
|
||||
database.Changes(changes).Write(&builder)
|
||||
i.writeCondition(&builder, condition)
|
||||
|
||||
stmt := i.builder.String()
|
||||
stmt := builder.String()
|
||||
|
||||
rowsAffected, err := i.client.Exec(ctx, stmt, i.builder.Args()...)
|
||||
rowsAffected, err := i.client.Exec(ctx, stmt, builder.Args()...)
|
||||
return rowsAffected, err
|
||||
}
|
||||
|
||||
@@ -117,12 +117,12 @@ func (i instance) Delete(ctx context.Context, condition database.Condition) erro
|
||||
if condition == nil {
|
||||
return errors.New("Delete must contain a condition") // (otherwise ALL instances will be deleted)
|
||||
}
|
||||
i.builder = database.StatementBuilder{}
|
||||
i.builder.WriteString(`UPDATE zitadel.instances SET deleted_at = $1`)
|
||||
i.builder.AppendArgs(time.Now())
|
||||
builder := database.StatementBuilder{}
|
||||
builder.WriteString(`UPDATE zitadel.instances SET deleted_at = $1`)
|
||||
builder.AppendArgs(time.Now())
|
||||
|
||||
i.writeCondition(condition)
|
||||
_, err := i.client.Exec(ctx, i.builder.String(), i.builder.Args()...)
|
||||
i.writeCondition(&builder, condition)
|
||||
_, err := i.client.Exec(ctx, builder.String(), builder.Args()...)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -203,12 +203,15 @@ func (instance) DeletedAtColumn() database.Column {
|
||||
return database.NewColumn("deleted_at")
|
||||
}
|
||||
|
||||
func (i *instance) writeCondition(condition database.Condition) {
|
||||
func (i *instance) writeCondition(
|
||||
builder *database.StatementBuilder,
|
||||
condition database.Condition,
|
||||
) {
|
||||
if condition == nil {
|
||||
return
|
||||
}
|
||||
i.builder.WriteString(" WHERE ")
|
||||
condition.Write(&i.builder)
|
||||
builder.WriteString(" WHERE ")
|
||||
condition.Write(builder)
|
||||
}
|
||||
|
||||
func scanInstance(scanner database.Scanner) (*domain.Instance, error) {
|
||||
|
@@ -3,6 +3,6 @@ package repository
|
||||
import "github.com/zitadel/zitadel/backend/v3/storage/database"
|
||||
|
||||
type repository struct {
|
||||
builder database.StatementBuilder
|
||||
client database.QueryExecutor
|
||||
// builder database.StatementBuilder
|
||||
client database.QueryExecutor
|
||||
}
|
||||
|
@@ -47,13 +47,14 @@ func (u *user) List(ctx context.Context, opts ...database.QueryOption) (users []
|
||||
opt(options)
|
||||
}
|
||||
|
||||
u.builder.WriteString(queryUserStmt)
|
||||
options.WriteCondition(&u.builder)
|
||||
options.WriteOrderBy(&u.builder)
|
||||
options.WriteLimit(&u.builder)
|
||||
options.WriteOffset(&u.builder)
|
||||
builder := database.StatementBuilder{}
|
||||
builder.WriteString(queryUserStmt)
|
||||
options.WriteCondition(&builder)
|
||||
options.WriteOrderBy(&builder)
|
||||
options.WriteLimit(&builder)
|
||||
options.WriteOffset(&builder)
|
||||
|
||||
rows, err := u.client.Query(ctx, u.builder.String(), u.builder.Args()...)
|
||||
rows, err := u.client.Query(ctx, builder.String(), builder.Args()...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -84,13 +85,14 @@ func (u *user) Get(ctx context.Context, opts ...database.QueryOption) (*domain.U
|
||||
opt(options)
|
||||
}
|
||||
|
||||
u.builder.WriteString(queryUserStmt)
|
||||
options.WriteCondition(&u.builder)
|
||||
options.WriteOrderBy(&u.builder)
|
||||
options.WriteLimit(&u.builder)
|
||||
options.WriteOffset(&u.builder)
|
||||
builder := database.StatementBuilder{}
|
||||
builder.WriteString(queryUserStmt)
|
||||
options.WriteCondition(&builder)
|
||||
options.WriteOrderBy(&builder)
|
||||
options.WriteLimit(&builder)
|
||||
options.WriteOffset(&builder)
|
||||
|
||||
return scanUser(u.client.QueryRow(ctx, u.builder.String(), u.builder.Args()...))
|
||||
return scanUser(u.client.QueryRow(ctx, builder.String(), builder.Args()...))
|
||||
}
|
||||
|
||||
const (
|
||||
@@ -104,23 +106,25 @@ const (
|
||||
|
||||
// Create implements [domain.UserRepository].
|
||||
func (u *user) Create(ctx context.Context, user *domain.User) error {
|
||||
u.builder.AppendArgs(user.InstanceID, user.OrgID, user.ID, user.Username, user.Traits.Type())
|
||||
builder := database.StatementBuilder{}
|
||||
builder.AppendArgs(user.InstanceID, user.OrgID, user.ID, user.Username, user.Traits.Type())
|
||||
switch trait := user.Traits.(type) {
|
||||
case *domain.Human:
|
||||
u.builder.WriteString(createHumanStmt)
|
||||
u.builder.AppendArgs(trait.FirstName, trait.LastName, trait.Email.Address, trait.Email.VerifiedAt, trait.Phone.Number, trait.Phone.VerifiedAt)
|
||||
builder.WriteString(createHumanStmt)
|
||||
builder.AppendArgs(trait.FirstName, trait.LastName, trait.Email.Address, trait.Email.VerifiedAt, trait.Phone.Number, trait.Phone.VerifiedAt)
|
||||
case *domain.Machine:
|
||||
u.builder.WriteString(createMachineStmt)
|
||||
u.builder.AppendArgs(trait.Description)
|
||||
builder.WriteString(createMachineStmt)
|
||||
builder.AppendArgs(trait.Description)
|
||||
}
|
||||
return u.client.QueryRow(ctx, u.builder.String(), u.builder.Args()...).Scan(&user.CreatedAt, &user.UpdatedAt)
|
||||
return u.client.QueryRow(ctx, builder.String(), builder.Args()...).Scan(&user.CreatedAt, &user.UpdatedAt)
|
||||
}
|
||||
|
||||
// Delete implements [domain.UserRepository].
|
||||
func (u *user) Delete(ctx context.Context, condition database.Condition) error {
|
||||
u.builder.WriteString("DELETE FROM users")
|
||||
u.writeCondition(condition)
|
||||
_, err := u.client.Exec(ctx, u.builder.String(), u.builder.Args()...)
|
||||
builder := database.StatementBuilder{}
|
||||
builder.WriteString("DELETE FROM users")
|
||||
u.writeCondition(builder, condition)
|
||||
_, err := u.client.Exec(ctx, builder.String(), builder.Args()...)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -219,12 +223,15 @@ func (user) DeletedAtColumn() database.Column {
|
||||
return database.NewColumn("deleted_at")
|
||||
}
|
||||
|
||||
func (u *user) writeCondition(condition database.Condition) {
|
||||
func (u *user) writeCondition(
|
||||
builder database.StatementBuilder,
|
||||
condition database.Condition,
|
||||
) {
|
||||
if condition == nil {
|
||||
return
|
||||
}
|
||||
u.builder.WriteString(" WHERE ")
|
||||
condition.Write(&u.builder)
|
||||
builder.WriteString(" WHERE ")
|
||||
condition.Write(&builder)
|
||||
}
|
||||
|
||||
func (u user) columns() database.Columns {
|
||||
|
@@ -24,14 +24,14 @@ const userEmailQuery = `SELECT h.email_address, h.email_verified_at FROM user_hu
|
||||
func (u *userHuman) GetEmail(ctx context.Context, condition database.Condition) (*domain.Email, error) {
|
||||
var email domain.Email
|
||||
|
||||
u.builder.WriteString(userEmailQuery)
|
||||
u.writeCondition(condition)
|
||||
builder := database.StatementBuilder{}
|
||||
builder.WriteString(userEmailQuery)
|
||||
u.writeCondition(builder, condition)
|
||||
|
||||
err := u.client.QueryRow(ctx, u.builder.String(), u.builder.Args()...).Scan(
|
||||
err := u.client.QueryRow(ctx, builder.String(), builder.Args()...).Scan(
|
||||
&email.Address,
|
||||
&email.VerifiedAt,
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -40,13 +40,14 @@ func (u *userHuman) GetEmail(ctx context.Context, condition database.Condition)
|
||||
|
||||
// Update implements [domain.HumanRepository].
|
||||
func (h userHuman) Update(ctx context.Context, condition database.Condition, changes ...database.Change) error {
|
||||
h.builder.WriteString(`UPDATE human_users SET `)
|
||||
database.Changes(changes).Write(&h.builder)
|
||||
h.writeCondition(condition)
|
||||
builder := database.StatementBuilder{}
|
||||
builder.WriteString(`UPDATE human_users SET `)
|
||||
database.Changes(changes).Write(&builder)
|
||||
h.writeCondition(builder, condition)
|
||||
|
||||
stmt := h.builder.String()
|
||||
stmt := builder.String()
|
||||
|
||||
_, err := h.client.Exec(ctx, stmt, h.builder.Args()...)
|
||||
_, err := h.client.Exec(ctx, stmt, builder.Args()...)
|
||||
return err
|
||||
}
|
||||
|
||||
|
@@ -19,12 +19,13 @@ var _ domain.MachineRepository = (*userMachine)(nil)
|
||||
|
||||
// Update implements [domain.MachineRepository].
|
||||
func (m userMachine) Update(ctx context.Context, condition database.Condition, changes ...database.Change) error {
|
||||
m.builder.WriteString("UPDATE user_machines SET ")
|
||||
database.Changes(changes).Write(&m.builder)
|
||||
m.writeCondition(condition)
|
||||
builder := database.StatementBuilder{}
|
||||
builder.WriteString("UPDATE user_machines SET ")
|
||||
database.Changes(changes).Write(&builder)
|
||||
m.writeCondition(builder, condition)
|
||||
m.writeReturning()
|
||||
|
||||
_, err := m.client.Exec(ctx, m.builder.String(), m.builder.Args()...)
|
||||
_, err := m.client.Exec(ctx, builder.String(), builder.Args()...)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -60,6 +61,7 @@ func (m userMachine) columns() database.Columns {
|
||||
}
|
||||
|
||||
func (m *userMachine) writeReturning() {
|
||||
m.builder.WriteString(" RETURNING ")
|
||||
m.columns().Write(&m.builder)
|
||||
builder := database.StatementBuilder{}
|
||||
builder.WriteString(" RETURNING ")
|
||||
m.columns().Write(&builder)
|
||||
}
|
||||
|
Reference in New Issue
Block a user