Files
..

存储层

本模块负责数据访问层的实现,提供数据库操作接口。

功能特性

  • 统一的数据库连接管理
  • 自动数据库迁移
  • 接口化的数据访问层
  • 支持分页查询
  • 支持条件查询

模块结构

storage/
├── database.go      # 数据库连接和迁移
├── user_storage.go  # 用户数据访问
├── role_storage.go  # 角色数据访问
├── menu_storage.go  # 菜单数据访问
├── log_storage.go   # 日志数据访问
└── README.md        # 说明文档

使用方法

初始化数据库

// 初始化数据库连接
err := storage.InitDatabase()
if err != nil {
    log.Fatal(err)
}

// 自动迁移数据库表
err = storage.AutoMigrate()
if err != nil {
    log.Fatal(err)
}

使用存储接口

// 创建用户存储实例
userStorage := storage.NewUserStorage()

// 创建用户
user := &models.User{
    Username: "admin",
    Email:    "admin@example.com",
    Password: "password",
}
err := userStorage.Create(user)

// 获取用户列表
req := &models.UserListRequest{
    PageRequest: models.PageRequest{Page: 1, Size: 10},
    Username: "admin",
}
users, total, err := userStorage.List(req)

接口设计

所有存储接口都遵循统一的模式:

  • Create() - 创建记录
  • GetByID() - 根据ID获取记录
  • Update() - 更新记录
  • Delete() - 删除记录
  • List() - 获取列表(支持分页和条件查询)

数据库配置

数据库配置通过配置文件进行管理,支持以下配置项:

  • dsn - 数据库连接字符串
  • maxIdleConns - 最大空闲连接数
  • maxOpenConns - 最大打开连接数