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:
@@ -14,28 +14,26 @@ const (
|
||||
)
|
||||
|
||||
type Document struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Type DocumentType `json:"type"`
|
||||
YjsState []byte `json:"-"`
|
||||
OwnerID *uuid.UUID `json:"owner_id"` // NEW
|
||||
Is_Public bool `json:"is_public"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
ID uuid.UUID `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Type DocumentType `json:"type"`
|
||||
YjsState []byte `json:"-"`
|
||||
OwnerID *uuid.UUID `json:"owner_id"` // NEW
|
||||
Is_Public bool `json:"is_public"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
|
||||
type CreateDocumentRequest struct {
|
||||
Name string `json:"name" binding:"required"`
|
||||
Type DocumentType `json:"type" binding:"required"`
|
||||
}
|
||||
Name string `json:"name" binding:"required"`
|
||||
Type DocumentType `json:"type" binding:"required"`
|
||||
}
|
||||
|
||||
type UpdateStateRequest struct {
|
||||
State []byte `json:"state" binding:"required"`
|
||||
}
|
||||
|
||||
type DocumentListResponse struct {
|
||||
Documents []Document `json:"documents"`
|
||||
Total int `json:"total"`
|
||||
}
|
||||
type UpdateStateRequest struct {
|
||||
State []byte `json:"state" binding:"required"`
|
||||
}
|
||||
|
||||
type DocumentListResponse struct {
|
||||
Documents []Document `json:"documents"`
|
||||
Total int `json:"total"`
|
||||
}
|
||||
|
||||
@@ -7,30 +7,30 @@ import (
|
||||
)
|
||||
|
||||
type DocumentShare struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
DocumentID uuid.UUID `json:"document_id"`
|
||||
UserID uuid.UUID `json:"user_id"`
|
||||
Permission string `json:"permission"` // "view" or "edit"
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
CreatedBy *uuid.UUID `json:"created_by"`
|
||||
ID uuid.UUID `json:"id"`
|
||||
DocumentID uuid.UUID `json:"document_id"`
|
||||
UserID uuid.UUID `json:"user_id"`
|
||||
Permission string `json:"permission"` // "view" or "edit"
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
CreatedBy *uuid.UUID `json:"created_by"`
|
||||
}
|
||||
|
||||
type CreateShareRequest struct {
|
||||
UserEmail string `json:"user_email" binding:"required"`
|
||||
Permission string `json:"permission" binding:"required,oneof=view edit"`
|
||||
UserEmail string `json:"user_email" binding:"required"`
|
||||
Permission string `json:"permission" binding:"required,oneof=view edit"`
|
||||
}
|
||||
|
||||
type ShareListResponse struct {
|
||||
Shares []DocumentShareWithUser `json:"shares"`
|
||||
Shares []DocumentShareWithUser `json:"shares"`
|
||||
}
|
||||
|
||||
type DocumentShareWithUser struct {
|
||||
DocumentShare
|
||||
User User `json:"user"`
|
||||
DocumentShare
|
||||
User User `json:"user"`
|
||||
}
|
||||
|
||||
// PermissionResponse represents the user's permission level for a document
|
||||
type PermissionResponse struct {
|
||||
Permission string `json:"permission"` // "view" or "edit"
|
||||
Role string `json:"role"` // "owner", "editor", or "viewer"
|
||||
Permission string `json:"permission"` // "view" or "edit"
|
||||
Role string `json:"role"` // "owner", "editor", or "viewer"
|
||||
}
|
||||
|
||||
@@ -7,42 +7,42 @@ import (
|
||||
)
|
||||
|
||||
type User struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
Email string `json:"email"`
|
||||
Name string `json:"name"`
|
||||
AvatarURL *string `json:"avatar_url"`
|
||||
Provider string `json:"provider"`
|
||||
ProviderUserID string `json:"-"` // Don't expose
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
LastLoginAt *time.Time `json:"last_login_at"`
|
||||
ID uuid.UUID `json:"id"`
|
||||
Email string `json:"email"`
|
||||
Name string `json:"name"`
|
||||
AvatarURL *string `json:"avatar_url"`
|
||||
Provider string `json:"provider"`
|
||||
ProviderUserID string `json:"-"` // Don't expose
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
LastLoginAt *time.Time `json:"last_login_at"`
|
||||
}
|
||||
|
||||
type Session struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
UserID uuid.UUID `json:"user_id"`
|
||||
TokenHash string `json:"-"` // SHA-256 hash of JWT
|
||||
ExpiresAt time.Time `json:"expires_at"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UserAgent *string `json:"user_agent"`
|
||||
IPAddress *string `json:"ip_address"`
|
||||
ID uuid.UUID `json:"id"`
|
||||
UserID uuid.UUID `json:"user_id"`
|
||||
TokenHash string `json:"-"` // SHA-256 hash of JWT
|
||||
ExpiresAt time.Time `json:"expires_at"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UserAgent *string `json:"user_agent"`
|
||||
IPAddress *string `json:"ip_address"`
|
||||
}
|
||||
|
||||
type OAuthToken struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
UserID uuid.UUID `json:"user_id"`
|
||||
Provider string `json:"provider"`
|
||||
AccessToken string `json:"-"` // Don't expose
|
||||
RefreshToken *string `json:"-"`
|
||||
TokenType string `json:"token_type"`
|
||||
ExpiresAt time.Time `json:"expires_at"`
|
||||
Scope *string `json:"scope"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
ID uuid.UUID `json:"id"`
|
||||
UserID uuid.UUID `json:"user_id"`
|
||||
Provider string `json:"provider"`
|
||||
AccessToken string `json:"-"` // Don't expose
|
||||
RefreshToken *string `json:"-"`
|
||||
TokenType string `json:"token_type"`
|
||||
ExpiresAt time.Time `json:"expires_at"`
|
||||
Scope *string `json:"scope"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
// Response for /auth/me endpoint
|
||||
type UserResponse struct {
|
||||
User *User `json:"user"`
|
||||
Token string `json:"token,omitempty"`
|
||||
User *User `json:"user"`
|
||||
Token string `json:"token,omitempty"`
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@ import (
|
||||
type DocumentVersion struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
DocumentID uuid.UUID `json:"document_id"`
|
||||
YjsSnapshot []byte `json:"-"` // Omit from JSON (binary)
|
||||
TextPreview *string `json:"text_preview"` // Full plain text
|
||||
YjsSnapshot []byte `json:"-"` // Omit from JSON (binary)
|
||||
TextPreview *string `json:"text_preview"` // Full plain text
|
||||
VersionNumber int `json:"version_number"`
|
||||
CreatedBy *uuid.UUID `json:"created_by"`
|
||||
VersionLabel *string `json:"version_label"`
|
||||
|
||||
Reference in New Issue
Block a user