Improved CLI for user handling
This commit is contained in:
+24
-2
@@ -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
@@ -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
|
||||
|
||||
@@ -36,6 +36,7 @@ type (
|
||||
Query string
|
||||
Email string
|
||||
Username string
|
||||
OrderBy string
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user