Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
0c2adfa1
Commit
0c2adfa1
authored
Jul 26, 2022
by
boojack
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: add delete user api
parent
07d9649b
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
55 additions
and
1 deletion
+55
-1
user.go
api/user.go
+4
-0
user.go
server/user.go
+5
-0
10001__user.sql
store/db/seed/10001__user.sql
+22
-0
user.go
store/user.go
+24
-1
No files found.
api/user.go
View file @
0c2adfa1
...
@@ -73,3 +73,7 @@ type UserFind struct {
...
@@ -73,3 +73,7 @@ type UserFind struct {
Name
*
string
`json:"name"`
Name
*
string
`json:"name"`
OpenID
*
string
OpenID
*
string
}
}
type
UserDelete
struct
{
ID
int
}
server/user.go
View file @
0c2adfa1
...
@@ -44,6 +44,11 @@ func (s *Server) registerUserRoutes(g *echo.Group) {
...
@@ -44,6 +44,11 @@ func (s *Server) registerUserRoutes(g *echo.Group) {
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to fetch user list"
)
.
SetInternal
(
err
)
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to fetch user list"
)
.
SetInternal
(
err
)
}
}
for
_
,
user
:=
range
userList
{
// data desensitize
user
.
OpenID
=
""
}
c
.
Response
()
.
Header
()
.
Set
(
echo
.
HeaderContentType
,
echo
.
MIMEApplicationJSONCharsetUTF8
)
c
.
Response
()
.
Header
()
.
Set
(
echo
.
HeaderContentType
,
echo
.
MIMEApplicationJSONCharsetUTF8
)
if
err
:=
json
.
NewEncoder
(
c
.
Response
()
.
Writer
)
.
Encode
(
composeResponse
(
userList
));
err
!=
nil
{
if
err
:=
json
.
NewEncoder
(
c
.
Response
()
.
Writer
)
.
Encode
(
composeResponse
(
userList
));
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to encode user list response"
)
.
SetInternal
(
err
)
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to encode user list response"
)
.
SetInternal
(
err
)
...
...
store/db/seed/10001__user.sql
View file @
0c2adfa1
...
@@ -37,3 +37,25 @@ VALUES
...
@@ -37,3 +37,25 @@ VALUES
-- raw password: secret
-- raw password: secret
'$2a$14$ajq8Q7fbtFRQvXpdCq7Jcuy.Rx1h/L4J60Otx.gyNLbAYctGMJ9tK'
'$2a$14$ajq8Q7fbtFRQvXpdCq7Jcuy.Rx1h/L4J60Otx.gyNLbAYctGMJ9tK'
);
);
INSERT
INTO
user
(
`id`
,
`row_status`
,
`email`
,
`role`
,
`name`
,
`open_id`
,
`password_hash`
)
VALUES
(
103
,
'ARCHIVED'
,
'bob@usememos.com'
,
'USER'
,
'Bob'
,
'bob_open_id'
,
-- raw password: secret
'$2a$14$ajq8Q7fbtFRQvXpdCq7Jcuy.Rx1h/L4J60Otx.gyNLbAYctGMJ9tK'
);
\ No newline at end of file
store/user.go
View file @
0c2adfa1
...
@@ -96,6 +96,15 @@ func (s *Store) FindUser(find *api.UserFind) (*api.User, error) {
...
@@ -96,6 +96,15 @@ func (s *Store) FindUser(find *api.UserFind) (*api.User, error) {
return
user
,
nil
return
user
,
nil
}
}
func
(
s
*
Store
)
DeleteUser
(
delete
*
api
.
UserDelete
)
error
{
err
:=
deleteUser
(
s
.
db
,
delete
)
if
err
!=
nil
{
return
FormatError
(
err
)
}
return
nil
}
func
createUser
(
db
*
sql
.
DB
,
create
*
api
.
UserCreate
)
(
*
userRaw
,
error
)
{
func
createUser
(
db
*
sql
.
DB
,
create
*
api
.
UserCreate
)
(
*
userRaw
,
error
)
{
row
,
err
:=
db
.
Query
(
`
row
,
err
:=
db
.
Query
(
`
INSERT INTO user (
INSERT INTO user (
...
@@ -224,7 +233,7 @@ func findUserList(db *sql.DB, find *api.UserFind) ([]*userRaw, error) {
...
@@ -224,7 +233,7 @@ func findUserList(db *sql.DB, find *api.UserFind) ([]*userRaw, error) {
row_status
row_status
FROM user
FROM user
WHERE `
+
strings
.
Join
(
where
,
" AND "
)
+
`
WHERE `
+
strings
.
Join
(
where
,
" AND "
)
+
`
ORDER BY created_ts DESC`
,
ORDER BY created_ts DESC
, row_status DESC
`
,
args
...
,
args
...
,
)
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -259,3 +268,17 @@ func findUserList(db *sql.DB, find *api.UserFind) ([]*userRaw, error) {
...
@@ -259,3 +268,17 @@ func findUserList(db *sql.DB, find *api.UserFind) ([]*userRaw, error) {
return
userRawList
,
nil
return
userRawList
,
nil
}
}
func
deleteUser
(
db
*
sql
.
DB
,
delete
*
api
.
UserDelete
)
error
{
result
,
err
:=
db
.
Exec
(
`DELETE FROM user WHERE id = ?`
,
delete
.
ID
)
if
err
!=
nil
{
return
FormatError
(
err
)
}
rows
,
_
:=
result
.
RowsAffected
()
if
rows
==
0
{
return
&
common
.
Error
{
Code
:
common
.
NotFound
,
Err
:
fmt
.
Errorf
(
"user ID not found: %d"
,
delete
.
ID
)}
}
return
nil
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment