// 新的表名:m.TimeTableName(time.Now().Unix()),旧的表名:m.TableName()

func (r *ApiLastSpiderTimeRepo) CheckTable() error {
	db := mysql.Factories.Default()

	m := new(model.ApiLastSpiderTime)
	sliceTableName := m.TimeTableName(time.Now().Unix())    
	if !db.Migrator().HasTable(sliceTableName) {
		schema := make(map[string]interface{})
		db.Raw(fmt.Sprintf("show create table `%s`", m.TableName())).Scan(&schema)

		schemaCreate := schema["Create Table"]
		schemaCreateSql, _ := schemaCreate.(string)

		sliceSchemaCreateSql := strings.Replace(schemaCreateSql,
			fmt.Sprintf("CREATE TABLE `%s`", m.TableName()),
			fmt.Sprintf("CREATE TABLE `%s`", sliceTableName), 1)
		if err := db.Exec(sliceSchemaCreateSql).Error; err != nil {
			return err
		}
	}
	return nil
}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐