package models import ( "database/sql" "time" ) type User struct { ID uint `json:"id"` Username string `json:"username"` Email string `json:"email"` Role string `json:"role"` // admin or user CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` DeletedAt *time.Time `json:"deleted_at,omitempty"` } type Session struct { ID string `json:"id"` UserID uint `json:"user_id"` ExpiresAt time.Time `json:"expires_at"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` DeletedAt *time.Time `json:"deleted_at,omitempty"` } // CreateTableSQL 返回创建用户表的 SQL func CreateUserTableSQL() string { return ` CREATE TABLE IF NOT EXISTS user ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL, email TEXT UNIQUE NOT NULL, role TEXT NOT NULL DEFAULT 'user', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, deleted_at DATETIME )` } // CreateSessionTableSQL 返回创建会话表的 SQL func CreateSessionTableSQL() string { return ` CREATE TABLE IF NOT EXISTS session ( id TEXT PRIMARY KEY, user_id INTEGER NOT NULL, expires_at DATETIME NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, deleted_at DATETIME, FOREIGN KEY (user_id) REFERENCES user(id) )` } // GetUser 获取会话关联的用户 func (s *Session) GetUser(db *sql.DB) (*User, error) { var user User err := db.QueryRow("SELECT id, username, email, role, created_at, updated_at, deleted_at FROM user WHERE id = ?", s.UserID).Scan( &user.ID, &user.Username, &user.Email, &user.Role, &user.CreatedAt, &user.UpdatedAt, &user.DeletedAt) if err != nil { return nil, err } return &user, nil }