Feature/role create #5
|
@ -42,10 +42,10 @@ func (s Service) Create(payload CreateOptions) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (payload CreateOptions) newUser() (result User, err error) {
|
func (payload CreateOptions) newUser() (result dbUser, err error) {
|
||||||
timeNow := now()
|
timeNow := now()
|
||||||
roleID, _ := mongodb.NewIDFromString(payload.RoleID)
|
roleID, _ := mongodb.NewIDFromString(payload.RoleID)
|
||||||
return User{
|
return dbUser{
|
||||||
ID: mongodb.NewObjectID(),
|
ID: mongodb.NewObjectID(),
|
||||||
Name: payload.Name,
|
Name: payload.Name,
|
||||||
SearchString: getSearchString(payload.Name, payload.Phone, payload.Email),
|
SearchString: getSearchString(payload.Name, payload.Phone, payload.Email),
|
||||||
|
|
|
@ -17,7 +17,7 @@ type AllQuery struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// All ...
|
// All ...
|
||||||
func (s Service) All(queryParams AllQuery) (r ResponseUserAll) {
|
func (s Service) All(queryParams AllQuery) (r UserAll) {
|
||||||
var (
|
var (
|
||||||
ctx = context.Background()
|
ctx = context.Background()
|
||||||
wg sync.WaitGroup
|
wg sync.WaitGroup
|
||||||
|
@ -56,12 +56,12 @@ func (s Service) All(queryParams AllQuery) (r ResponseUserAll) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func getResponseList(ctx context.Context, users []User) []ResponseUser {
|
func getResponseList(ctx context.Context, users []dbUser) []User {
|
||||||
res := make([]ResponseUser, 0)
|
res := make([]User, 0)
|
||||||
|
|
||||||
for _, user := range users {
|
for _, user := range users {
|
||||||
role, _ := s.roleFindByID(ctx, user.RoleID)
|
role, _ := s.roleFindByID(ctx, user.RoleID)
|
||||||
res = append(res, ResponseUser{
|
res = append(res, User{
|
||||||
ID: user.ID.Hex(),
|
ID: user.ID.Hex(),
|
||||||
Name: user.Name,
|
Name: user.Name,
|
||||||
Phone: user.Phone,
|
Phone: user.Phone,
|
||||||
|
|
14
db.go
14
db.go
|
@ -68,7 +68,7 @@ func (s Service) isRoleIDExisted(ctx context.Context, roleID primitive.ObjectID)
|
||||||
return total != 0
|
return total != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s Service) userCreate(ctx context.Context, doc User) error {
|
func (s Service) userCreate(ctx context.Context, doc dbUser) error {
|
||||||
var (
|
var (
|
||||||
col = s.getUserCollection()
|
col = s.getUserCollection()
|
||||||
)
|
)
|
||||||
|
@ -103,20 +103,20 @@ func (s Service) userUpdateOneByCondition(ctx context.Context, cond interface{},
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s Service) userFindByID(ctx context.Context, id primitive.ObjectID) (User, error) {
|
func (s Service) userFindByID(ctx context.Context, id primitive.ObjectID) (dbUser, error) {
|
||||||
var (
|
var (
|
||||||
col = s.getUserCollection()
|
col = s.getUserCollection()
|
||||||
doc User
|
doc dbUser
|
||||||
)
|
)
|
||||||
err := col.FindOne(ctx, bson.M{"_id": id}).Decode(&doc)
|
err := col.FindOne(ctx, bson.M{"_id": id}).Decode(&doc)
|
||||||
return doc, err
|
return doc, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s Service) userFindByCondition(ctx context.Context, cond interface{}, opts ...*options.FindOptions) (docs []User) {
|
func (s Service) userFindByCondition(ctx context.Context, cond interface{}, opts ...*options.FindOptions) (docs []dbUser) {
|
||||||
var (
|
var (
|
||||||
col = s.getUserCollection()
|
col = s.getUserCollection()
|
||||||
)
|
)
|
||||||
docs = make([]User, 0)
|
docs = make([]dbUser, 0)
|
||||||
|
|
||||||
cursor, err := col.Find(ctx, cond, opts...)
|
cursor, err := col.Find(ctx, cond, opts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -155,10 +155,10 @@ func (s Service) userCountByCondition(ctx context.Context, cond interface{}) int
|
||||||
return total
|
return total
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s Service) roleFindByID(ctx context.Context, id primitive.ObjectID) (Role, error) {
|
func (s Service) roleFindByID(ctx context.Context, id primitive.ObjectID) (dbRole, error) {
|
||||||
var (
|
var (
|
||||||
col = s.getRoleCollection()
|
col = s.getRoleCollection()
|
||||||
doc Role
|
doc dbRole
|
||||||
)
|
)
|
||||||
err := col.FindOne(ctx, bson.M{"_id": id}).Decode(&doc)
|
err := col.FindOne(ctx, bson.M{"_id": id}).Decode(&doc)
|
||||||
return doc, err
|
return doc, err
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
package usermngmt
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
)
|
||||||
|
|
||||||
|
// dbUser ...
|
||||||
|
type dbUser struct {
|
||||||
|
ID primitive.ObjectID `bson:"_id"`
|
||||||
|
Name string `bson:"name"`
|
||||||
|
SearchString string `bson:"searchString"`
|
||||||
|
Phone string `bson:"phone"` // unique
|
||||||
|
Email string `bson:"email"` // unique
|
||||||
|
HashedPassword string `bson:"hashedPassword"`
|
||||||
|
Status string `bson:"status"`
|
||||||
|
RoleID primitive.ObjectID `bson:"roleId"`
|
||||||
|
Other string `bson:"other"`
|
||||||
|
CreatedAt time.Time `bson:"createdAt"`
|
||||||
|
UpdatedAt time.Time `bson:"updatedAt"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// dbRole ...
|
||||||
|
type dbRole struct {
|
||||||
|
ID primitive.ObjectID `bson:"_id" json:"_id"`
|
||||||
|
Name string `bson:"name" json:"name"`
|
||||||
|
Code string `bson:"code" json:"code"`
|
||||||
|
IsAdmin bool `bson:"isAdmin" json:"isAdmin"`
|
||||||
|
CreatedAt time.Time `bson:"createdAt" json:"createdAt"`
|
||||||
|
UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"`
|
||||||
|
}
|
35
model.go
35
model.go
|
@ -2,27 +2,10 @@ package usermngmt
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// User ...
|
// User ...
|
||||||
type User struct {
|
type User struct {
|
||||||
ID primitive.ObjectID `bson:"_id" json:"_id"`
|
|
||||||
Name string `bson:"name" json:"name"`
|
|
||||||
SearchString string `bson:"searchString" json:"-"`
|
|
||||||
Phone string `bson:"phone" json:"phone"` // unique
|
|
||||||
Email string `bson:"email" json:"email"` // unique
|
|
||||||
HashedPassword string `bson:"hashedPassword" json:"-"`
|
|
||||||
Status string `bson:"status" json:"status"`
|
|
||||||
RoleID primitive.ObjectID `bson:"roleId" json:"roleId"`
|
|
||||||
Other string `bson:"other" json:"other"`
|
|
||||||
CreatedAt time.Time `bson:"createdAt" json:"createdAt"`
|
|
||||||
UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// ResponseUser ...
|
|
||||||
type ResponseUser struct {
|
|
||||||
ID string `json:"_id"`
|
ID string `json:"_id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Phone string `json:"phone"`
|
Phone string `json:"phone"`
|
||||||
|
@ -34,16 +17,6 @@ type ResponseUser struct {
|
||||||
UpdatedAt time.Time `json:"updatedAt"`
|
UpdatedAt time.Time `json:"updatedAt"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Role ...
|
|
||||||
type Role struct {
|
|
||||||
ID primitive.ObjectID `bson:"_id" json:"_id"`
|
|
||||||
Name string `bson:"name" json:"name"`
|
|
||||||
Code string `bson:"code" json:"code"`
|
|
||||||
IsAdmin bool `bson:"isAdmin" json:"isAdmin"`
|
|
||||||
CreatedAt time.Time `bson:"createdAt" json:"createdAt"`
|
|
||||||
UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type RoleShort struct {
|
type RoleShort struct {
|
||||||
ID string `json:"_id"`
|
ID string `json:"_id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
|
@ -51,9 +24,9 @@ type RoleShort struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type (
|
type (
|
||||||
// ResponseUserAll ...
|
// UserAll ...
|
||||||
ResponseUserAll struct {
|
UserAll struct {
|
||||||
List []ResponseUser `json:"list"`
|
List []User `json:"list"`
|
||||||
Total int64 `json:"total"`
|
Total int64 `json:"total"`
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue