Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
新鸿 黄
CommentArea
Commits
4a351917
Commit
4a351917
authored
Jun 11, 2024
by
happystarkitty
Browse files
update
parent
45316686
Changes
6
Hide whitespace changes
Inline
Side-by-side
BackEnd/BackEnd.exe
View file @
4a351917
No preview for this file type
BackEnd/db/init.go
View file @
4a351917
...
@@ -2,7 +2,7 @@ package db
...
@@ -2,7 +2,7 @@ package db
import
(
import
(
"database/sql"
"database/sql"
//
"fmt"
"fmt"
//"log"
//"log"
//"os"
//"os"
...
@@ -11,16 +11,18 @@ import (
...
@@ -11,16 +11,18 @@ import (
var
db
*
sql
.
DB
var
db
*
sql
.
DB
func
InitDB
()
{
func
InitDB
()
error
{
var
err
error
var
err
error
connStr
:=
"longyue:longyue0511@tcp(127.0.0.1:3306)/Comments"
connStr
:=
"longyue:longyue0511@tcp(127.0.0.1:3306)/Comments"
db
,
err
=
sql
.
Open
(
"mysql"
,
connStr
)
db
,
err
=
sql
.
Open
(
"mysql"
,
connStr
)
if
err
!=
nil
{
if
err
!=
nil
{
panic
(
err
)
return
fmt
.
Errorf
(
"failed to open database connection: %v"
,
err
)
}
}
err
=
db
.
Ping
()
err
=
db
.
Ping
()
if
err
!=
nil
{
if
err
!=
nil
{
panic
(
err
)
return
fmt
.
Errorf
(
"failed to ping database: %v"
,
err
)
}
}
return
nil
}
}
BackEnd/db/models.go
View file @
4a351917
...
@@ -13,10 +13,11 @@ type Comment struct {
...
@@ -13,10 +13,11 @@ type Comment struct {
Content
string
`json:"content"`
Content
string
`json:"content"`
}
}
func
GetComment
(
offset
,
size
int
)
([]
Comment
,
error
)
{
func
GetComment
(
page
,
size
int
)
([]
Comment
,
int
,
error
)
{
offset
:=
(
page
-
1
)
*
size
rows
,
err
:=
db
.
Query
(
"SELECT id,name,content FROM comments LIMIT ? OFFSET ?"
,
size
,
offset
)
rows
,
err
:=
db
.
Query
(
"SELECT id,name,content FROM comments LIMIT ? OFFSET ?"
,
size
,
offset
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
0
,
err
}
}
defer
rows
.
Close
()
defer
rows
.
Close
()
...
@@ -24,23 +25,33 @@ func GetComment(offset, size int) ([]Comment, error) {
...
@@ -24,23 +25,33 @@ func GetComment(offset, size int) ([]Comment, error) {
for
rows
.
Next
()
{
for
rows
.
Next
()
{
var
comment
Comment
var
comment
Comment
if
err
:=
rows
.
Scan
(
&
comment
.
ID
,
&
comment
.
Name
,
&
comment
.
Content
);
err
!=
nil
{
if
err
:=
rows
.
Scan
(
&
comment
.
ID
,
&
comment
.
Name
,
&
comment
.
Content
);
err
!=
nil
{
return
nil
,
err
return
nil
,
0
,
err
}
}
comments
=
append
(
comments
,
comment
)
comments
=
append
(
comments
,
comment
)
}
}
if
err
:=
rows
.
Err
();
err
!=
nil
{
if
err
:=
rows
.
Err
();
err
!=
nil
{
return
nil
,
err
return
nil
,
0
,
err
}
total
,
err
:=
GetTotalComments
()
if
err
!=
nil
{
return
nil
,
0
,
err
}
}
return
comments
,
nil
return
comments
,
total
,
nil
}
}
func
AddComment
(
name
string
,
content
string
)
(
int
,
error
)
{
func
AddComment
(
name
string
,
content
string
)
(
int
,
error
)
{
var
id
int
result
,
err
:=
db
.
Exec
(
"INSERT INTO comments (name,content) VALUES (?,?)"
,
name
,
content
)
err
:=
db
.
QueryRow
(
"INSERT INTO comments (name,content) VALUES(?,?) RETURNING id"
,
name
,
content
)
.
Scan
(
&
id
)
if
err
!=
nil
{
return
0
,
err
}
id
,
err
:=
result
.
LastInsertId
()
if
err
!=
nil
{
if
err
!=
nil
{
return
0
,
err
return
0
,
err
}
}
return
i
d
,
nil
return
i
nt
(
id
)
,
nil
}
}
func
DeleteComment
(
commentID
int
)
error
{
func
DeleteComment
(
commentID
int
)
error
{
...
@@ -54,5 +65,5 @@ func GetTotalComments() (int, error) {
...
@@ -54,5 +65,5 @@ func GetTotalComments() (int, error) {
if
err
!=
nil
{
if
err
!=
nil
{
return
0
,
err
return
0
,
err
}
}
return
total
,
err
return
total
,
nil
}
}
BackEnd/main.go
View file @
4a351917
...
@@ -9,7 +9,9 @@ import (
...
@@ -9,7 +9,9 @@ import (
)
)
func
main
()
{
func
main
()
{
db
.
InitDB
()
if
err
:=
db
.
InitDB
();
err
!=
nil
{
log
.
Fatalf
(
"Failed to initialize database: %v"
,
err
)
}
mux
:=
http
.
NewServeMux
()
mux
:=
http
.
NewServeMux
()
...
@@ -17,10 +19,15 @@ func main() {
...
@@ -17,10 +19,15 @@ func main() {
mux
.
HandleFunc
(
"/comment/add"
,
server
.
AddComment
)
mux
.
HandleFunc
(
"/comment/add"
,
server
.
AddComment
)
mux
.
HandleFunc
(
"/comment/delete"
,
server
.
DeleteComment
)
mux
.
HandleFunc
(
"/comment/delete"
,
server
.
DeleteComment
)
handler
:=
cors
.
Default
()
.
Handler
(
mux
)
corsHandler
:=
cors
.
New
(
cors
.
Options
{
AllowedOrigins
:
[]
string
{
"*"
},
AllowedMethods
:
[]
string
{
"GET"
,
"POST"
,
"DELETE"
,
"OPTIONS"
},
AllowedHeaders
:
[]
string
{
"Content-Type"
},
AllowCredentials
:
true
,
})
.
Handler
(
mux
)
log
.
Println
(
"Starting server on :8080"
)
log
.
Println
(
"Starting server on :8080"
)
if
err
:=
http
.
ListenAndServe
(
":8080"
,
h
andler
);
err
!=
nil
{
if
err
:=
http
.
ListenAndServe
(
":8080"
,
corsH
andler
);
err
!=
nil
{
log
.
Fatalf
(
"Server failed to start: %v"
,
err
)
log
.
Fatalf
(
"Server failed to start: %v"
,
err
)
}
}
}
}
BackEnd/server/server.go
View file @
4a351917
...
@@ -50,35 +50,20 @@ func GetComment(w http.ResponseWriter, r *http.Request) {
...
@@ -50,35 +50,20 @@ func GetComment(w http.ResponseWriter, r *http.Request) {
size
=
10
size
=
10
}
}
dbComments
,
err
:=
db
.
GetComment
(
page
,
size
)
dbComments
,
total
,
err
:=
db
.
GetComment
(
page
,
size
)
if
err
!=
nil
{
if
err
!=
nil
{
http
.
Error
(
w
,
err
.
Error
(),
http
.
StatusInternalServerError
)
http
.
Error
(
w
,
err
.
Error
(),
http
.
StatusInternalServerError
)
return
return
}
}
start
:=
(
page
-
1
)
*
size
response
:=
GetCommentResponse
{
end
:=
start
+
size
Code
:
0
,
if
start
>
len
(
dbComments
)
{
Msg
:
"success"
,
start
=
len
(
dbComments
)
Data
:
GetData
{
Total
:
total
,
Comments
:
dbComments
,
},
}
}
if
end
>
len
(
dbComments
)
{
end
=
len
(
dbComments
)
}
pagedComments
:=
dbComments
[
start
:
end
]
comments
:=
make
([]
db
.
Comment
,
len
(
pagedComments
))
for
i
,
c
:=
range
pagedComments
{
comments
[
i
]
=
db
.
Comment
{
ID
:
c
.
ID
,
Name
:
c
.
Name
,
Content
:
c
.
Content
,
}
}
var
response
GetCommentResponse
response
.
Code
=
0
response
.
Msg
=
"success"
response
.
Data
.
Total
=
len
(
dbComments
)
response
.
Data
.
Comments
=
comments
w
.
Header
()
.
Set
(
"Content-Type"
,
"application/json;charset=utf-8"
)
w
.
Header
()
.
Set
(
"Content-Type"
,
"application/json;charset=utf-8"
)
json
.
NewEncoder
(
w
)
.
Encode
(
response
)
json
.
NewEncoder
(
w
)
.
Encode
(
response
)
...
...
script.js
View file @
4a351917
...
@@ -3,13 +3,11 @@ const commentSection = document.querySelector("#commentSection");
...
@@ -3,13 +3,11 @@ const commentSection = document.querySelector("#commentSection");
const
submitButton
=
document
.
querySelector
(
"
#submitButton
"
);
const
submitButton
=
document
.
querySelector
(
"
#submitButton
"
);
const
userNameInput
=
document
.
querySelector
(
"
#userName
"
);
const
userNameInput
=
document
.
querySelector
(
"
#userName
"
);
const
commentContentInput
=
document
.
querySelector
(
"
#commentContent
"
);
const
commentContentInput
=
document
.
querySelector
(
"
#commentContent
"
);
const
deleteButton
=
document
.
querySelectorAll
(
"
.deleteButton
"
);
const
previousPageButton
=
document
.
querySelector
(
"
#previousPage
"
)
const
previousPageButton
=
document
.
querySelector
(
"
#previousPage
"
)
const
nextPageButton
=
document
.
querySelector
(
"
#nextPage
"
)
const
nextPageButton
=
document
.
querySelector
(
"
#nextPage
"
)
let
currentPage
=
1
;
let
currentPage
=
1
;
const
pageSize
=
10
;
const
pageSize
=
10
;
let
commentNumber
=
0
;
function
resetInput
()
{
function
resetInput
()
{
userNameInput
.
value
=
""
;
userNameInput
.
value
=
""
;
...
@@ -19,7 +17,6 @@ function resetInput() {
...
@@ -19,7 +17,6 @@ function resetInput() {
function
deleteComment
(
event
){
function
deleteComment
(
event
){
const
comment
=
event
.
target
.
parentElement
;
const
comment
=
event
.
target
.
parentElement
;
const
commentId
=
comment
.
getAttribute
(
"
data-id
"
);
const
commentId
=
comment
.
getAttribute
(
"
data-id
"
);
html
.
removeChild
(
comment
);
fetch
(
`http://localhost:8080/comment/delete?id=
${
commentId
}
`
,{
fetch
(
`http://localhost:8080/comment/delete?id=
${
commentId
}
`
,{
method
:
'
DELETE
'
,
method
:
'
DELETE
'
,
headers
:{
headers
:{
...
@@ -30,19 +27,19 @@ function deleteComment(event){
...
@@ -30,19 +27,19 @@ function deleteComment(event){
.
then
(
data
=>
{
.
then
(
data
=>
{
if
(
data
.
code
===
0
){
if
(
data
.
code
===
0
){
console
.
log
(
"
Comment deleted successfully
"
);
console
.
log
(
"
Comment deleted successfully
"
);
getComment
(
currentPage
,
pageSize
);
}
else
{
}
else
{
console
.
error
(
"
Failed to delete comment
"
,
data
.
msg
);
console
.
error
(
"
Failed to delete comment
"
,
data
.
msg
);
}
}
}
})
)
.
catch
(
error
=>
{
.
catch
(
error
=>
{
console
.
error
(
"
Error:
"
,
error
);
console
.
error
(
"
Error:
"
,
error
);
});}
});
}
function
addComment
()
{
function
addComment
()
{
const
userName
=
userNameInput
.
value
;
const
userName
=
userNameInput
.
value
;
const
commentContent
=
commentContentInput
.
value
;
const
commentContent
=
commentContentInput
.
value
;
commentNumber
=
commentNumber
+
1
;
fetch
(
'
http://localhost:8080/comment/add
'
,{
fetch
(
'
http://localhost:8080/comment/add
'
,{
method
:
'
POST
'
,
method
:
'
POST
'
,
...
@@ -78,8 +75,8 @@ function getComment(page,size){
...
@@ -78,8 +75,8 @@ function getComment(page,size){
.
then
(
data
=>
{
.
then
(
data
=>
{
if
(
data
.
code
===
0
){
if
(
data
.
code
===
0
){
console
.
log
(
"
Comments fetched successfully
"
);
console
.
log
(
"
Comments fetched successfully
"
);
renderComments
(
data
.
data
);
renderComments
(
data
.
data
.
comments
);
updatePaginationButtons
(
data
.
total
);
updatePaginationButtons
(
data
.
data
.
total
);
}
else
{
}
else
{
console
.
error
(
"
Error fetching comments:
"
,
data
.
msg
);
console
.
error
(
"
Error fetching comments:
"
,
data
.
msg
);
}
}
...
@@ -93,41 +90,28 @@ function renderComments(comments){
...
@@ -93,41 +90,28 @@ function renderComments(comments){
comments
.
forEach
(
comment
=>
{
comments
.
forEach
(
comment
=>
{
const
commentDiv
=
document
.
createElement
(
"
div
"
);
const
commentDiv
=
document
.
createElement
(
"
div
"
);
commentDiv
.
className
=
"
comment_box
"
;
commentDiv
.
className
=
"
comment_box
"
;
commentDiv
.
setAttribute
(
"
data-id
"
,
comment
.
id
);
const
commentatorName
=
document
.
createElement
(
"
h3
"
);
const
commentatorName
=
document
.
createElement
(
"
h3
"
);
commentatorName
.
textContent
=
comment
.
name
;
commentatorName
.
textContent
=
comment
.
name
;
const
commentatorContent
=
document
.
createElement
(
"
p
"
);
const
commentatorContent
=
document
.
createElement
(
"
p
"
);
commentatorContent
.
textContent
=
comment
.
content
;
commentatorContent
.
textContent
=
comment
.
content
;
const
deleteButton
=
document
.
createElement
(
"
button
"
);
const
deleteButton
=
document
.
createElement
(
"
button
"
);
deleteButton
.
textContent
=
"
删除
"
;
deleteButton
.
textContent
=
"
删除
"
;
deleteButton
.
className
=
"
delete_button
"
;
const
shiftRow
=
document
.
createElement
(
"
br
"
);
deleteButton
.
addEventListener
(
"
click
"
,
deleteComment
);
deleteButton
.
addEventListener
(
"
click
"
,
deleteComment
);
commentDiv
.
appendChild
(
commentatorName
);
commentDiv
.
appendChild
(
commentatorName
);
commentDiv
.
appendChild
(
commentatorContent
);
commentDiv
.
appendChild
(
commentatorContent
);
commentDiv
.
appendChild
(
deleteButton
);
commentDiv
.
appendChild
(
deleteButton
);
commentSection
.
appendChild
(
commentDiv
);
commentSection
.
appendChild
(
commentDiv
);
commentSection
.
appendChild
(
shiftRow
);
});}
});}
else
{
else
{
console
.
error
(
"
Comments data is not an array
"
);
console
.
error
(
"
Comments data is not an array
"
);
}
}
}
}
function
deleteComment
(
commentID
){
fetch
(
'
http://localhost:8080/comment/delete?id=${commentID}
'
,{
method
:
'
DELETE
'
})
.
then
(
response
=>
response
.
json
())
.
then
(
data
=>
{
if
(
data
.
code
===
0
){
console
.
log
(
"
Comment deleted successfully
"
);
getComment
(
currentPage
,
pageSize
);
}
else
{
console
.
error
(
"
Error deleting comment:
"
,
data
.
msg
);
}
})
.
catch
(
error
=>
console
.
error
(
"
Error:
"
.
error
));
}
function
updatePaginationButtons
(
totalComments
){
function
updatePaginationButtons
(
totalComments
){
const
totalPages
=
Math
.
ceil
(
totalComments
/
pageSize
);
const
totalPages
=
Math
.
ceil
(
totalComments
/
pageSize
);
previousPageButton
.
disabled
=
currentPage
<=
1
;
previousPageButton
.
disabled
=
currentPage
<=
1
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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