func DoTestCreateIndexSql(assert *assrt.Assert, info dialectSyntax) { assert.Logf("Dialect %T\n", info.dialect) sql := info.dialect.CreateIndexSql("iname", "itable", true, "a", "b", "c") assert.Equal(info.createUniqueIndexSql, sql) sql = info.dialect.CreateIndexSql("iname2", "itable2", false, "d", "e") assert.Equal(info.createIndexSql, sql) }
func DoTestDeleteSQL(assert *assrt.Assert, info dialectSyntax) { assert.Logf("Dialect %T\n", info.dialect) model := structPtrToModel(sqlGenSampleData, true, nil) criteria := &Criteria{model: model} criteria.mergePkCondition(info.dialect) sql, _ := info.dialect.DeleteSql(criteria) sql = info.dialect.SubstituteMarkers(sql) assert.Equal(info.deleteSql, sql) }
func DoTestSelectionSQL(assert *assrt.Assert, info dialectSyntax) { assert.Logf("Dialect %T\n", info.dialect) type User struct { Id int64 Name string } type Post struct { Id int64 AuthorId int64 `qbs:"fk:Author"` Author *User Content string } model := structPtrToModel(new(Post), true, nil) criteria := new(Criteria) criteria.model = model sql, _ := info.dialect.QuerySql(criteria) assert.Equal(info.selectionSql, sql) }
func DoTestCreateTable(assert *assrt.Assert, info dialectInfo) { assert.Logf("Dialect %T\n", info.dialect) mg, _ := setupDb(assert, info) { type AddColumn struct { Prim Id } table := &AddColumn{} mg.dropTableIfExists(table) mg.CreateTableIfNotExists(table) columns := mg.Dialect.ColumnsInTable(mg, table) assert.OneLen(columns) assert.True(columns["prim"]) } table := &AddColumn{} mg.CreateTableIfNotExists(table) columns := mg.Dialect.ColumnsInTable(mg, table) assert.Equal(4, len(columns)) }
func DoTestQuerySQL(assert *assrt.Assert, info dialectSyntax) { assert.Logf("Dialect %T\n", info.dialect) type Student struct { Name string Grade int Score int } model := structPtrToModel(new(Student), true, nil) criteria := new(Criteria) criteria.model = model condition := NewInCondition("grade", []interface{}{6, 7, 8}) subCondition := NewCondition("score <= ?", 60).Or("score >= ?", 80) condition.AndCondition(subCondition) criteria.condition = condition criteria.orderBys = []order{order{info.dialect.Quote("name"), false}, order{info.dialect.Quote("grade"), true}} criteria.offset = 3 criteria.limit = 10 sql, _ := info.dialect.QuerySql(criteria) sql = info.dialect.SubstituteMarkers(sql) assert.Equal(info.querySql, sql) }
func DoTestCreateTable(assert *assrt.Assert, info dialectInfo) { assert.Logf("Dialect %T\n", info.dialect) mg, _ := setupDb(assert, info) defer mg.Close() { type AddColumn struct { Prim int64 `qbs:"pk"` } table := &AddColumn{} mg.dropTableIfExists(table) mg.CreateTableIfNotExists(table) columns := mg.Dialect.ColumnsInTable(mg, table) assert.OneLen(columns) assert.True(columns["prim"]) } table := &AddColumn{} mg.CreateTableIfNotExists(table) assert.True(mg.Dialect.IndexExists(mg, "add_column", "add_column_first_last")) columns := mg.Dialect.ColumnsInTable(mg, table) assert.Equal(4, len(columns)) }
func DoTestCreateTableSql(assert *assrt.Assert, info dialectSyntax) { assert.Logf("Dialect %T\n", info.dialect) type withoutPk struct { First string Last string Amount int } table := &withoutPk{"a", "b", 5} model := structPtrToModel(table, true, nil) sql := info.dialect.CreateTableSql(model, true) assert.Equal(info.createTableWithoutPkIfExistsSql, sql) type withPk struct { Primary int64 `qbs:"pk"` First string Last string Amount int } table2 := &withPk{First: "a", Last: "b", Amount: 5} model = structPtrToModel(table2, true, nil) sql = info.dialect.CreateTableSql(model, false) assert.Equal(info.createTableWithPkSql, sql) }
func DoTestAddColumSQL(assert *assrt.Assert, info dialectSyntax) { assert.Logf("Dialect %T\n", info.dialect) sql := info.dialect.AddColumnSql("a", "c", "", 100) assert.Equal(info.addColumnSql, sql) }
func DoTestDropTableSQL(assert *assrt.Assert, info dialectSyntax) { assert.Logf("Dialect %T\n", info.dialect) sql := info.dialect.DropTableSql("drop_table") assert.Equal(info.dropTableIfExistsSql, sql) }