Skip to content

Commit cda129f

Browse files
Add postgres implem test
1 parent 7816cc5 commit cda129f

File tree

4 files changed

+581
-15
lines changed

4 files changed

+581
-15
lines changed

dao/err/postgres_error_wrapper.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,20 @@ import (
44
"database/sql"
55
"errors"
66

7+
"github.com/google/uuid"
78
"github.com/lib/pq"
89
)
910

1011
// WrapPostgresError wraps a postgres error into a DaoError to have a DB agnostic error handling in the handlers
1112
func WrapPostgresError(err error) DaoError {
12-
if errors.Is(err, sql.ErrNoRows) {
13-
return NewDaoError(NotFound, err)
14-
}
1513
var pqErr *pq.Error
16-
if errors.As(err, &pqErr) && pqErr.Code == "22P02" {
14+
switch {
15+
case errors.Is(err, sql.ErrNoRows):
16+
return NewDaoError(NotFound, err)
17+
case uuid.IsInvalidLengthError(err), errors.As(err, &pqErr) && pqErr.Code == "22P02":
1718
return NewDaoError(InvalidUUID, err)
19+
default:
20+
return NewDaoError(UnknownError, err)
21+
1822
}
19-
return NewDaoError(UnknownError, err)
2023
}

dao/pgimpl/postgres_impl.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ func (m *pgFlagImpl) GetFlagByName(ctx context.Context, name string) (model.Feat
108108

109109
var rules []dbmodel.Rule
110110
errRule := m.conn.SelectContext(ctx, &rules,
111-
`SELECT * FROM rules WHERE feature_flag_id = $1 ORDER BY order_index DESC`, f.ID)
111+
`SELECT * FROM rules WHERE feature_flag_id = $1 ORDER BY order_index`, f.ID)
112112
if errRule != nil && !errors.Is(errRule, pgx.ErrNoRows) {
113113
return model.FeatureFlag{}, daoErr.WrapPostgresError(errRule)
114114
}
@@ -123,7 +123,7 @@ func (m *pgFlagImpl) GetFlagByName(ctx context.Context, name string) (model.Feat
123123
func (m *pgFlagImpl) CreateFlag(ctx context.Context, flag model.FeatureFlag) (string, daoErr.DaoError) {
124124
dbFeatureFlag, err := dbmodel.FromModelFeatureFlag(flag)
125125
if err != nil {
126-
return "", daoErr.NewDaoError(daoErr.ConversionError, err)
126+
return "", daoErr.WrapPostgresError(err)
127127
}
128128

129129
tx, err := m.conn.Beginx()
@@ -197,7 +197,7 @@ func (m *pgFlagImpl) CreateFlag(ctx context.Context, flag model.FeatureFlag) (st
197197
func (m *pgFlagImpl) UpdateFlag(ctx context.Context, flag model.FeatureFlag) daoErr.DaoError {
198198
dbQuery, errConv := dbmodel.FromModelFeatureFlag(flag)
199199
if errConv != nil {
200-
return daoErr.NewDaoError(daoErr.ConversionError, errConv)
200+
return daoErr.WrapPostgresError(errConv)
201201
}
202202
tx, err := m.conn.Beginx()
203203
if err != nil {
@@ -258,15 +258,15 @@ func (m *pgFlagImpl) UpdateFlag(ctx context.Context, flag model.FeatureFlag) dao
258258

259259
for _, id := range toCreate {
260260
rule := listNewRuleIDs[id]
261-
if err := m.insertRule(ctx, rule, false, dbQuery.ID, tx, flagOrder[dbQuery.ID.String()]); err != nil {
261+
if err := m.insertRule(ctx, rule, false, dbQuery.ID, tx, flagOrder[id]); err != nil {
262262
_ = tx.Rollback
263263
return daoErr.WrapPostgresError(err)
264264
}
265265
}
266266

267267
for _, id := range toUpdate {
268268
rule := listNewRuleIDs[id]
269-
if err = m.updateRule(ctx, rule, false, dbQuery.ID, tx, flagOrder[dbQuery.ID.String()]); err != nil {
269+
if err = m.updateRule(ctx, rule, false, dbQuery.ID, tx, flagOrder[id]); err != nil {
270270
_ = tx.Rollback
271271
return daoErr.WrapPostgresError(err)
272272
}

0 commit comments

Comments
 (0)