3
0

Improved CLI for user handling

This commit is contained in:
Denis Arh
2019-02-06 05:37:38 +01:00
parent 387f7d5af7
commit ccb3f957e7
3 changed files with 52 additions and 22 deletions
+24 -2
View File
@@ -29,18 +29,40 @@ func cliExecUsers(commands ...string) {
func cliExecUsersList(params ...string) {
var (
upd, del string
err error
uu types.UserSet
ctx = context.Background()
)
if uu, err = service.DefaultUser.With(ctx).Find(nil); err != nil {
uf := &types.UserFilter{
OrderBy: "updated_at",
}
if uu, err = service.DefaultUser.With(ctx).Find(uf); err != nil {
fmt.Printf("Error: %v\n", err)
os.Exit(1)
}
fmt.Println("ID Updated Deleted [email / name / username]")
for _, u := range uu {
fmt.Printf("%20d | %-40s | %-20s\n", u.ID, u.Email+" / "+u.Name+" / "+u.Username, u.UpdatedAt)
upd, del = "---- -- --", "---- -- --"
if u.UpdatedAt != nil {
upd = u.UpdatedAt.Format("2006-01-02")
}
if u.DeletedAt != nil {
upd = u.DeletedAt.Format("2006-01-02")
}
fmt.Printf(
"%20d %s %s %s\n",
u.ID,
upd,
del,
u.Email+" / "+u.Name+" / "+u.Username)
}
}
+27 -20
View File
@@ -105,32 +105,39 @@ func (r *user) FindByIDs(IDs ...uint64) (uu types.UserSet, err error) {
}
func (r *user) Find(filter *types.UserFilter) ([]*types.User, error) {
if filter == nil {
filter = &types.UserFilter{}
}
rval := make([]*types.User, 0)
params := make([]interface{}, 0)
sql := fmt.Sprintf(sqlUserSelect, r.users)
if filter != nil {
if filter.Query != "" {
sql += " AND (username LIKE ?"
params = append(params, filter.Query+"%")
sql += " OR email LIKE ?"
params = append(params, filter.Query+"%")
sql += " OR name LIKE ?)"
params = append(params, filter.Query+"%")
}
if filter.Email != "" {
sql += " AND (email = ?)"
params = append(params, filter.Email)
}
if filter.Username != "" {
sql += " AND (username = ?)"
params = append(params, filter.Username)
}
if filter.Query != "" {
sql += " AND (username LIKE ?"
params = append(params, filter.Query+"%")
sql += " OR email LIKE ?"
params = append(params, filter.Query+"%")
sql += " OR name LIKE ?)"
params = append(params, filter.Query+"%")
}
sql += " ORDER BY username ASC"
if filter.Email != "" {
sql += " AND (email = ?)"
params = append(params, filter.Email)
}
if filter.Username != "" {
sql += " AND (username = ?)"
params = append(params, filter.Username)
}
switch filter.OrderBy {
case "updated_at", "createdAt":
sql += " ORDER BY updated_at DESC"
default:
sql += " ORDER BY username ASC"
}
if err := r.db().Select(&rval, sql, params...); err != nil {
return nil, err
+1
View File
@@ -36,6 +36,7 @@ type (
Query string
Email string
Username string
OrderBy string
}
)