mirror of
https://gitee.com/dromara/mayfly-go
synced 2026-02-16 17:25:36 +08:00
feat: sql解析器替换、工单统一由‘我的流程’发起、流程定义支持自定义条件触发审批、资源隐藏编号、model支持物理删除等
This commit is contained in:
76
server/internal/db/dbm/sqlparser/sqlstmt/quote_char.go
Normal file
76
server/internal/db/dbm/sqlparser/sqlstmt/quote_char.go
Normal file
@@ -0,0 +1,76 @@
|
||||
package sqlstmt
|
||||
|
||||
import "strings"
|
||||
|
||||
type QuoteChar struct {
|
||||
StartDelimiter string
|
||||
EndDelimiter string
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrap value with quote character.
|
||||
*
|
||||
* @param value value to be wrapped
|
||||
* @return wrapped value
|
||||
*/
|
||||
func (qc *QuoteChar) Wrap(value string) string {
|
||||
return qc.StartDelimiter + value + qc.EndDelimiter
|
||||
}
|
||||
|
||||
/**
|
||||
* Unwrap value with quote character.
|
||||
*
|
||||
* @param value value to be unwrapped
|
||||
* @return unwrapped value
|
||||
*/
|
||||
func (qc *QuoteChar) Unwrap(value string) string {
|
||||
if qc.IsWrapped(value) {
|
||||
return value[len(qc.StartDelimiter) : len(value)-len(qc.EndDelimiter)]
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
/**
|
||||
* Is wrapped by quote character.
|
||||
*
|
||||
* @param value value to be judged
|
||||
* @return is wrapped or not
|
||||
*/
|
||||
func (qc *QuoteChar) IsWrapped(value string) bool {
|
||||
return strings.HasPrefix(value, qc.StartDelimiter) && strings.HasSuffix(value, qc.EndDelimiter)
|
||||
}
|
||||
|
||||
func NewQuoteChar(startDelimiter, endDelimiter string) *QuoteChar {
|
||||
return &QuoteChar{
|
||||
StartDelimiter: startDelimiter,
|
||||
EndDelimiter: endDelimiter,
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
BACK_QUOTE = NewQuoteChar("`", "`")
|
||||
SINGLE_QUOTE = NewQuoteChar("'", "'")
|
||||
QUOTE = NewQuoteChar("\"", "\"")
|
||||
BRACKETS = NewQuoteChar("[", "]")
|
||||
PARENTHESES = NewQuoteChar("(", ")")
|
||||
NONE = NewQuoteChar("", "")
|
||||
|
||||
BY_FIRST_CHAR = map[string]*QuoteChar{
|
||||
BACK_QUOTE.StartDelimiter: BACK_QUOTE,
|
||||
SINGLE_QUOTE.StartDelimiter: SINGLE_QUOTE,
|
||||
QUOTE.StartDelimiter: QUOTE,
|
||||
BRACKETS.StartDelimiter: BRACKETS,
|
||||
PARENTHESES.StartDelimiter: PARENTHESES,
|
||||
}
|
||||
)
|
||||
|
||||
func GetQuoteChar(value string) *QuoteChar {
|
||||
if value == "" {
|
||||
return NONE
|
||||
}
|
||||
if qc := BY_FIRST_CHAR[value[0:1]]; qc != nil {
|
||||
return qc
|
||||
} else {
|
||||
return NONE
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user