7f7b585ffb
- 在应用程序中新增对达梦数据库(DM)的配置和连接支持 - 实现 SetDmDB 函数以配置达梦数据库连接 - 更新数据库操作逻辑,支持达梦特有的 SQL 语法和功能 - 在相关文件中添加达梦数据库的处理逻辑,包括表创建、数据插入和查询 - 更新 go.mod 和 go.sum 文件以引入达梦数据库驱动 - 增强文档,详细说明达梦数据库的配置和使用方法
132 lines
4.1 KiB
Go
132 lines
4.1 KiB
Go
package app
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
. "code.hoteas.com/golang/hotime/db"
|
|
)
|
|
|
|
// SetupMySQLDatabase 为 MySQL 数据库创建测试表并灌入测试数据
|
|
func SetupMySQLDatabase(db *HoTimeDB) {
|
|
if db.Type != "mysql" {
|
|
return
|
|
}
|
|
|
|
fmt.Println("[MySQL Setup] 开始初始化 MySQL 数据库测试环境...")
|
|
|
|
prefix := db.GetPrefix()
|
|
createMySQLTables(db, prefix)
|
|
seedTestData(db, "MySQL")
|
|
|
|
fmt.Println("[MySQL Setup] MySQL 数据库测试环境初始化完成")
|
|
}
|
|
|
|
func mysqlTableExists(db *HoTimeDB, tableName string) bool {
|
|
rows := db.Query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=?", tableName)
|
|
return len(rows) > 0
|
|
}
|
|
|
|
func createMySQLTables(db *HoTimeDB, prefix string) {
|
|
// admin 表
|
|
tbl := prefix + "admin"
|
|
if !mysqlTableExists(db, tbl) {
|
|
fmt.Println("[MySQL Setup] 创建表:", tbl)
|
|
db.Exec("CREATE TABLE `" + tbl + "` (" +
|
|
"`id` int(11) unsigned NOT NULL AUTO_INCREMENT," +
|
|
"`name` varchar(100) DEFAULT NULL," +
|
|
"`phone` varchar(20) DEFAULT NULL," +
|
|
"`state` int(2) DEFAULT '0'," +
|
|
"`password` varchar(100) DEFAULT NULL," +
|
|
"`role_id` int(11) DEFAULT '0'," +
|
|
"`title` varchar(100) DEFAULT NULL," +
|
|
"`create_time` datetime DEFAULT NULL," +
|
|
"`modify_time` datetime DEFAULT NULL," +
|
|
"PRIMARY KEY (`id`)," +
|
|
"UNIQUE KEY `uk_phone` (`phone`)" +
|
|
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4")
|
|
}
|
|
|
|
// ctg 分类表
|
|
tbl = prefix + "ctg"
|
|
if !mysqlTableExists(db, tbl) {
|
|
fmt.Println("[MySQL Setup] 创建表:", tbl)
|
|
db.Exec("CREATE TABLE `" + tbl + "` (" +
|
|
"`id` int(11) unsigned NOT NULL AUTO_INCREMENT," +
|
|
"`name` varchar(100) DEFAULT NULL," +
|
|
"`state` int(2) DEFAULT '0'," +
|
|
"`create_time` datetime DEFAULT NULL," +
|
|
"`modify_time` datetime DEFAULT NULL," +
|
|
"PRIMARY KEY (`id`)" +
|
|
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4")
|
|
}
|
|
|
|
// article 文章表
|
|
tbl = prefix + "article"
|
|
if !mysqlTableExists(db, tbl) {
|
|
fmt.Println("[MySQL Setup] 创建表:", tbl)
|
|
db.Exec("CREATE TABLE `" + tbl + "` (" +
|
|
"`id` int(11) unsigned NOT NULL AUTO_INCREMENT," +
|
|
"`title` varchar(200) DEFAULT NULL," +
|
|
"`author` varchar(100) DEFAULT NULL," +
|
|
"`content` text," +
|
|
"`state` int(2) DEFAULT '0'," +
|
|
"`click_num` int(11) DEFAULT '0'," +
|
|
"`sort` int(11) DEFAULT '0'," +
|
|
"`img` varchar(500) DEFAULT NULL," +
|
|
"`ctg_id` int(11) DEFAULT '0'," +
|
|
"`admin_id` int(11) DEFAULT '0'," +
|
|
"`create_time` datetime DEFAULT NULL," +
|
|
"`modify_time` datetime DEFAULT NULL," +
|
|
"PRIMARY KEY (`id`)," +
|
|
"KEY `idx_state` (`state`)," +
|
|
"KEY `idx_ctg_id` (`ctg_id`)" +
|
|
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4")
|
|
}
|
|
|
|
// test_batch 测试批量表
|
|
tbl = prefix + "test_batch"
|
|
if !mysqlTableExists(db, tbl) {
|
|
fmt.Println("[MySQL Setup] 创建表:", tbl)
|
|
db.Exec("CREATE TABLE `" + tbl + "` (" +
|
|
"`id` int(11) unsigned NOT NULL AUTO_INCREMENT," +
|
|
"`name` varchar(100) DEFAULT NULL," +
|
|
"`title` varchar(200) DEFAULT NULL," +
|
|
"`state` int(2) DEFAULT '0'," +
|
|
"`create_time` datetime DEFAULT NULL," +
|
|
"PRIMARY KEY (`id`)" +
|
|
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4")
|
|
}
|
|
|
|
// cached 老版本缓存表(兼容模式测试需要)
|
|
tbl = prefix + "cached"
|
|
if !mysqlTableExists(db, tbl) {
|
|
fmt.Println("[MySQL Setup] 创建表:", tbl)
|
|
db.Exec("CREATE TABLE `" + tbl + "` (" +
|
|
"`id` int(11) unsigned NOT NULL AUTO_INCREMENT," +
|
|
"`key` varchar(64) DEFAULT NULL," +
|
|
"`value` text," +
|
|
"`endtime` bigint(20) DEFAULT NULL," +
|
|
"`time` bigint(20) DEFAULT NULL," +
|
|
"PRIMARY KEY (`id`)" +
|
|
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4")
|
|
}
|
|
|
|
// hotime_cache 新版缓存表
|
|
tbl = prefix + "hotime_cache"
|
|
if !mysqlTableExists(db, tbl) {
|
|
fmt.Println("[MySQL Setup] 创建表:", tbl)
|
|
db.Exec("CREATE TABLE `" + tbl + "` (" +
|
|
"`id` int(11) unsigned NOT NULL AUTO_INCREMENT," +
|
|
"`key` varchar(64) NOT NULL," +
|
|
"`value` text," +
|
|
"`end_time` datetime DEFAULT NULL," +
|
|
"`state` int(2) DEFAULT '0'," +
|
|
"`create_time` datetime DEFAULT NULL," +
|
|
"`modify_time` datetime DEFAULT NULL," +
|
|
"PRIMARY KEY (`id`)," +
|
|
"UNIQUE KEY `uk_key` (`key`)," +
|
|
"KEY `idx_end_time` (`end_time`)" +
|
|
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4")
|
|
}
|
|
}
|