|
@ -0,0 +1,82 @@ |
|
|
|
|
|
package postgres |
|
|
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
|
"context" |
|
|
|
|
|
"database/sql" |
|
|
|
|
|
"git.aiterp.net/rpdata/api/database/postgres/psqlcore" |
|
|
|
|
|
"git.aiterp.net/rpdata/api/internal/generate" |
|
|
|
|
|
"git.aiterp.net/rpdata/api/models" |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
type keyRepository struct { |
|
|
|
|
|
db *sql.DB |
|
|
|
|
|
insertWithIDs bool |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (r *keyRepository) Find(ctx context.Context, id string) (*models.Key, error) { |
|
|
|
|
|
key, err := psqlcore.New(r.db).SelectKey(ctx, id) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return nil, err |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return &models.Key{ |
|
|
|
|
|
ID: key.ID, |
|
|
|
|
|
Name: key.Name, |
|
|
|
|
|
User: key.User, |
|
|
|
|
|
Secret: key.Secret, |
|
|
|
|
|
}, nil |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (r *keyRepository) List(ctx context.Context, filter models.KeyFilter) ([]*models.Key, error) { |
|
|
|
|
|
var keys []psqlcore.Key |
|
|
|
|
|
|
|
|
|
|
|
if filter.UserID != nil { |
|
|
|
|
|
keys2, err := psqlcore.New(r.db).SelectKeysByUser(ctx, *filter.UserID) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return nil, err |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
keys = keys2 |
|
|
|
|
|
} else { |
|
|
|
|
|
keys2, err := psqlcore.New(r.db).SelectKeys(ctx) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return nil, err |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
keys = keys2 |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
results := make([]*models.Key, 0, len(keys)) |
|
|
|
|
|
for _, key := range keys { |
|
|
|
|
|
results = append(results, &models.Key{ |
|
|
|
|
|
ID: key.ID, |
|
|
|
|
|
Name: key.Name, |
|
|
|
|
|
User: key.User, |
|
|
|
|
|
Secret: key.Secret, |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return results, nil |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (r *keyRepository) Insert(ctx context.Context, key models.Key) (*models.Key, error) { |
|
|
|
|
|
if !r.insertWithIDs || len(key.ID) < 4 { |
|
|
|
|
|
key.ID = generate.KeyID() |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
err := psqlcore.New(r.db).InsertKey(ctx, psqlcore.InsertKeyParams{ |
|
|
|
|
|
ID: key.ID, |
|
|
|
|
|
Name: key.Name, |
|
|
|
|
|
UserID: key.User, |
|
|
|
|
|
Secret: key.Secret, |
|
|
|
|
|
}) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return nil, err |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return &key, nil |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (r *keyRepository) Delete(ctx context.Context, key models.Key) error { |
|
|
|
|
|
return psqlcore.New(r.db).DeleteKey(ctx, key.ID) |
|
|
|
|
|
} |