gitea

Зеркало из https://github.com/go-gitea/gitea
Форк
0
/
common.go 
55 строк · 1.6 Кб
1
// Copyright 2022 The Gitea Authors. All rights reserved.
2
// SPDX-License-Identifier: MIT
3

4
package db
5

6
import (
7
	"strings"
8

9
	"code.gitea.io/gitea/modules/setting"
10
	"code.gitea.io/gitea/modules/util"
11

12
	"xorm.io/builder"
13
)
14

15
// BuildCaseInsensitiveLike returns a condition to check if the given value is like the given key case-insensitively.
16
// Handles especially SQLite correctly as UPPER there only transforms ASCII letters.
17
func BuildCaseInsensitiveLike(key, value string) builder.Cond {
18
	if setting.Database.Type.IsSQLite3() {
19
		return builder.Like{"UPPER(" + key + ")", util.ToUpperASCII(value)}
20
	}
21
	return builder.Like{"UPPER(" + key + ")", strings.ToUpper(value)}
22
}
23

24
// BuildCaseInsensitiveIn returns a condition to check if the given value is in the given values case-insensitively.
25
// Handles especially SQLite correctly as UPPER there only transforms ASCII letters.
26
func BuildCaseInsensitiveIn(key string, values []string) builder.Cond {
27
	uppers := make([]string, 0, len(values))
28
	if setting.Database.Type.IsSQLite3() {
29
		for _, value := range values {
30
			uppers = append(uppers, util.ToUpperASCII(value))
31
		}
32
	} else {
33
		for _, value := range values {
34
			uppers = append(uppers, strings.ToUpper(value))
35
		}
36
	}
37

38
	return builder.In("UPPER("+key+")", uppers)
39
}
40

41
// BuilderDialect returns the xorm.Builder dialect of the engine
42
func BuilderDialect() string {
43
	switch {
44
	case setting.Database.Type.IsMySQL():
45
		return builder.MYSQL
46
	case setting.Database.Type.IsSQLite3():
47
		return builder.SQLITE
48
	case setting.Database.Type.IsPostgreSQL():
49
		return builder.POSTGRES
50
	case setting.Database.Type.IsMSSQL():
51
		return builder.MSSQL
52
	default:
53
		return ""
54
	}
55
}
56

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.