package condition_test import ( "testing" "git.fsdpf.net/go/condition" "git.fsdpf.net/go/db" "github.com/stretchr/testify/suite" _ "git.fsdpf.net/go/db/dialect/sqlite3" db_eng "git.fsdpf.net/go/db/engine" "git.fsdpf.net/go/db/sqlgen" ) type conditionTest struct { suite.Suite db *db.Database esg sqlgen.ExpressionSQLGenerator } func TestConditionSuite(t *testing.T) { suite.Run(t, new(conditionTest)) } func (t *conditionTest) SetupSuite() { database := db_eng.Open(map[string]db_eng.DBConfig{ "condition-test": db_eng.NewDBConfig("sqlite3", db_eng.WithSQLiteFile(":memory:")), }) t.db = database.Connection("condition-test") } func (t *conditionTest) TestToSql() { cond := condition.New(condition.Describe("测试")) cond.SetExpr(condition.NewExpr("User", "name", condition.Operator(condition.LIKE), condition.Token("张三", condition.STRING))). SetExpr(condition.NewExpr("User", "age", condition.Token("18", condition.STRING))). SetExpr(condition.NewExpr("User", "attr->'birthday'", condition.Token("18", condition.STRING))). SetExpr(condition.NewExpr("User", "roles", condition.FieldSqlFn("json_contains", ""), condition.Token("admin", condition.STRING))) // SetExpr(condition.NewExpr("User", "roles", condition.FieldSqlFn("json_contains", ""), condition.Token("admin", condition.STRING))) t.T().Log(t.db.From(db.T("users").As("User")).Where(cond.ToSql(nil)).ToSQL()) }