Skip to content

Commit efa7912

Browse files
author
jxli
committed
feat: add some pgsql array operations
1 parent ebb6364 commit efa7912

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

field/string.go

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ func (field String) Substring(params ...int) String {
164164
}}}
165165
}
166166

167-
// Substr SUBSTR is a synonym for SUBSTRING
167+
// Substr SUBSTR is a synonym for SUBSTRING
168168
// https://dev.mysql.com/doc/refman/8.4/en/string-functions.html#function_substring
169169
func (field String) Substr(params ...int) String {
170170
if len(params) == 0 {
@@ -319,3 +319,27 @@ func (field Bytes) toSlice(values [][]byte) []interface{} {
319319
}
320320
return slice
321321
}
322+
323+
type PgSQLArrayOp string
324+
325+
const (
326+
PgSQLArrayOpEq PgSQLArrayOp = "="
327+
PgSQLArrayOpNeq PgSQLArrayOp = "<>"
328+
PgSQLArrayOpLt PgSQLArrayOp = "<"
329+
PgSQLArrayOpLte PgSQLArrayOp = "<="
330+
PgSQLArrayOpGt PgSQLArrayOp = ">"
331+
PgSQLArrayOpGte PgSQLArrayOp = ">="
332+
PgSQLArrayOpContains PgSQLArrayOp = "@>"
333+
PgSQLArrayOpContainedBy PgSQLArrayOp = "<@"
334+
PgSQLArrayOpOverlap PgSQLArrayOp = "&&"
335+
PgSQLArrayOpConcat PgSQLArrayOp = "||"
336+
)
337+
338+
// PgSQLArrayOperate values is like '{1, 2, 3}'
339+
340+
func (field String) PgSQLArrayOperate(op PgSQLArrayOp, values string) Expr {
341+
return expr{e: clause.Expr{
342+
SQL: fmt.Sprintf("? %s ?", op),
343+
Vars: []interface{}{field.RawExpr(), values},
344+
}}
345+
}

0 commit comments

Comments
 (0)