Refactor and improve code consistency across multiple files

- Enhanced SQL queries in `session.go` and `share.go` for clarity and consistency.
- Updated comments for better understanding and maintenance.
- Ensured consistent error handling and return statements across various methods.
This commit is contained in:
M1ngdaXie
2026-02-04 22:01:47 -08:00
parent 0f4cff89a2
commit c84cbafb2c
18 changed files with 629 additions and 631 deletions

2
.gitignore vendored
View File

@@ -33,3 +33,5 @@ build/
# Docker volumes and data
postgres_data/
.claude/

View File

@@ -142,7 +142,7 @@ func GetUserFromContext(c *gin.Context) *uuid.UUID {
// 修正点:使用和存入时完全一样的 Key
val, exists := c.Get(ContextUserIDKey)
fmt.Println("within getFromContext the id is ... ")
fmt.Println(val);
fmt.Println(val)
if !exists {
return nil
}

View File

@@ -181,7 +181,7 @@ func (h *AuthHandler) GithubCallback(c *gin.Context) {
log.Printf("Failed to parse GitHub response: %v | Data: %s", err, string(data))
c.JSON(http.StatusInternalServerError, gin.H{"error": "Invalid GitHub response"})
return
}
}
// If email is not public, fetch it separately
if userInfo.Email == "" {

View File

@@ -11,16 +11,15 @@ import (
"github.com/google/uuid"
)
type DocumentHandler struct {
type DocumentHandler struct {
store *store.PostgresStore
}
}
func NewDocumentHandler(s *store.PostgresStore) *DocumentHandler {
func NewDocumentHandler(s *store.PostgresStore) *DocumentHandler {
return &DocumentHandler{store: s}
}
}
// CreateDocument creates a new document (requires auth)
// CreateDocument creates a new document (requires auth)
func (h *DocumentHandler) CreateDocument(c *gin.Context) {
userID := auth.GetUserFromContext(c)
if userID == nil {
@@ -44,7 +43,7 @@ func (h *DocumentHandler) CreateDocument(c *gin.Context) {
c.JSON(http.StatusCreated, doc)
}
func (h *DocumentHandler) ListDocuments(c *gin.Context) {
func (h *DocumentHandler) ListDocuments(c *gin.Context) {
userID := auth.GetUserFromContext(c)
fmt.Println("Getting userId, which is : ")
fmt.Println(userID)
@@ -66,8 +65,7 @@ func (h *DocumentHandler) CreateDocument(c *gin.Context) {
})
}
func (h *DocumentHandler) GetDocument(c *gin.Context) {
func (h *DocumentHandler) GetDocument(c *gin.Context) {
id, err := uuid.Parse(c.Param("id"))
if err != nil {
respondBadRequest(c, "Invalid document ID format")
@@ -104,8 +102,9 @@ func (h *DocumentHandler) CreateDocument(c *gin.Context) {
c.JSON(http.StatusOK, doc)
}
// GetDocumentState returns the Yjs state for a document
// GetDocumentState retrieves document state (requires view permission)
// GetDocumentState returns the Yjs state for a document
// GetDocumentState retrieves document state (requires view permission)
func (h *DocumentHandler) GetDocumentState(c *gin.Context) {
id, err := uuid.Parse(c.Param("id"))
if err != nil {
@@ -143,7 +142,7 @@ func (h *DocumentHandler) GetDocumentState(c *gin.Context) {
c.Data(http.StatusOK, "application/octet-stream", state)
}
// UpdateDocumentState updates document state (requires edit permission)
// UpdateDocumentState updates document state (requires edit permission)
func (h *DocumentHandler) UpdateDocumentState(c *gin.Context) {
id, err := uuid.Parse(c.Param("id"))
if err != nil {
@@ -195,7 +194,7 @@ func (h *DocumentHandler) UpdateDocumentState(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "State updated successfully"})
}
// DeleteDocument deletes a document (owner only)
// DeleteDocument deletes a document (owner only)
func (h *DocumentHandler) DeleteDocument(c *gin.Context) {
id, err := uuid.Parse(c.Param("id"))
if err != nil {
@@ -290,7 +289,9 @@ func (h *DocumentHandler) GetDocumentPermission(c *gin.Context) {
}
tokenPerm = p
// 处理数据库老数据的 fallback
if tokenPerm == "" { tokenPerm = "view" }
if tokenPerm == "" {
tokenPerm = "view"
}
}
}

View File

@@ -153,6 +153,7 @@ func (h *ShareHandler) DeleteShare(c *gin.Context) {
c.Status(204)
}
// CreateShareLink generates a public share link
func (h *ShareHandler) CreateShareLink(c *gin.Context) {
documentID, err := uuid.Parse(c.Param("id"))

View File

@@ -206,8 +206,8 @@ func (s *ShareHandlerSuite) TestListShares_OwnerSeesAll() {
s.assertSuccessResponse(w, http.StatusOK)
var response models.ShareListResponse
s.parseJSONResponse(w, &response)
shares := response.Shares
s.parseJSONResponse(w, &response)
shares := response.Shares
s.GreaterOrEqual(len(shares), 1, "Should have at least one share")
}
@@ -229,8 +229,8 @@ func (s *ShareHandlerSuite) TestListShares_EmptyList() {
s.assertSuccessResponse(w, http.StatusOK)
var response models.ShareListResponse
s.parseJSONResponse(w, &response)
shares := response.Shares
s.parseJSONResponse(w, &response)
shares := response.Shares
s.Equal(0, len(shares), "Should have no shares")
}
@@ -243,8 +243,8 @@ func (s *ShareHandlerSuite) TestListShares_IncludesUserDetails() {
s.assertSuccessResponse(w, http.StatusOK)
var response models.ShareListResponse
s.parseJSONResponse(w, &response)
shares := response.Shares
s.parseJSONResponse(w, &response)
shares := response.Shares
if len(shares) > 0 {
share := shares[0]

View File

@@ -24,18 +24,16 @@ type Document struct {
UpdatedAt time.Time `json:"updated_at"`
}
type CreateDocumentRequest struct {
Name string `json:"name" binding:"required"`
Type DocumentType `json:"type" binding:"required"`
}
}
type UpdateStateRequest struct {
type UpdateStateRequest struct {
State []byte `json:"state" binding:"required"`
}
}
type DocumentListResponse struct {
type DocumentListResponse struct {
Documents []Document `json:"documents"`
Total int `json:"total"`
}
}

View File

@@ -53,11 +53,9 @@ type Store interface {
GetDocumentVersion(ctx context.Context, versionID uuid.UUID) (*models.DocumentVersion, error)
GetLatestDocumentVersion(ctx context.Context, documentID uuid.UUID) (*models.DocumentVersion, error)
Close() error
}
type PostgresStore struct {
db *sql.DB
}
@@ -78,7 +76,7 @@ func NewPostgresStore(databaseUrl string) (*PostgresStore, error) {
func (s *PostgresStore) Close() error {
return s.db.Close()
}
}
func (s *PostgresStore) CreateDocument(name string, docType models.DocumentType) (*models.Document, error) {
doc := &models.Document{
@@ -100,7 +98,6 @@ func (s *PostgresStore) CreateDocument(name string, docType models.DocumentType)
doc.Type,
doc.CreatedAt,
doc.UpdatedAt,
).Scan(&doc.ID, &doc.Name, &doc.Type, &doc.CreatedAt, &doc.UpdatedAt)
if err != nil {
@@ -109,8 +106,8 @@ func (s *PostgresStore) CreateDocument(name string, docType models.DocumentType)
return doc, nil
}
// GetDocument retrieves a document by ID
func (s *PostgresStore) GetDocument(id uuid.UUID) (*models.Document, error) {
// GetDocument retrieves a document by ID
func (s *PostgresStore) GetDocument(id uuid.UUID) (*models.Document, error) {
doc := &models.Document{}
query := `
@@ -138,11 +135,10 @@ func (s *PostgresStore) CreateDocument(name string, docType models.DocumentType)
}
return doc, nil
}
}
// ListDocuments retrieves all documents
func (s *PostgresStore) ListDocuments() ([]models.Document, error) {
// ListDocuments retrieves all documents
func (s *PostgresStore) ListDocuments() ([]models.Document, error) {
query := `
SELECT id, name, type, created_at, updated_at
FROM documents
@@ -166,9 +162,9 @@ func (s *PostgresStore) CreateDocument(name string, docType models.DocumentType)
}
return documents, nil
}
}
func (s *PostgresStore) UpdateDocumentState(id uuid.UUID, state []byte) error {
func (s *PostgresStore) UpdateDocumentState(id uuid.UUID, state []byte) error {
query := `
UPDATE documents
SET yjs_state = $1, updated_at = $2
@@ -190,9 +186,9 @@ func (s *PostgresStore) CreateDocument(name string, docType models.DocumentType)
}
return nil
}
}
func (s *PostgresStore) DeleteDocument(id uuid.UUID) error {
func (s *PostgresStore) DeleteDocument(id uuid.UUID) error {
query := `DELETE FROM documents WHERE id = $1`
result, err := s.db.Exec(query, id)
@@ -210,7 +206,7 @@ func (s *PostgresStore) CreateDocument(name string, docType models.DocumentType)
}
return nil
}
}
// CreateDocumentWithOwner creates a new document with owner
func (s *PostgresStore) CreateDocumentWithOwner(name string, docType models.DocumentType, ownerID *uuid.UUID) (*models.Document, error) {