1
0
mirror of https://github.com/ManyakRus/starter.git synced 2025-11-23 22:45:11 +02:00
Files
starter/postgres_func/postgres_func.go
2025-08-12 16:58:42 +03:00

168 lines
4.0 KiB
Go

package postgres_func
import (
"database/sql"
"strings"
"time"
)
// StringSQLTime - преобразует время в строку в формате SQL
func StringSQLTime(time1 time.Time) string {
Otvet := ""
format := "2006-01-02T15:04:05.999999Z07:00"
Otvet = "'" + time1.Format(format) + "'"
//Otvet = "'" + time1.Format(time.RFC3339Nano) + "'"
return Otvet
}
// StringSQLTime - преобразует время в строку в формате SQL, без часового пояса
func StringSQLTime_WithoutTimeZone(time1 time.Time) string {
Otvet := ""
format := "2006-01-02T15:04:05.999999+00:00"
Otvet = "'" + time1.Format(format) + "'"
return Otvet
}
// ReplaceSchemaName - заменяет имя схемы в тексте SQL
func ReplaceSchemaName(TextSQL, SchemaNameFrom, SchemaNameTo string) string {
Otvet := TextSQL
Otvet = strings.ReplaceAll(Otvet, SchemaNameFrom+".", SchemaNameTo+".")
return Otvet
}
// NullString_DefaultNull - преобразует строку в sql.NullString, если она пустая то Valid = false
func NullString_DefaultNull[T ~string](s T) sql.NullString {
Otvet := sql.NullString{}
Otvet.String = string(s)
Otvet.Valid = true
if s == "" {
Otvet.Valid = false
}
return Otvet
}
// NullInt64_DefaultNull - преобразует значение в sql.NullInt64, если пусто то Valid = false
func NullInt64_DefaultNull[T ~int64](Value T) sql.NullInt64 {
Otvet := sql.NullInt64{}
Otvet.Int64 = int64(Value)
Otvet.Valid = true
if Value == 0 {
Otvet.Valid = false
}
return Otvet
}
// NullInt32_DefaultNull - преобразует значение в sql.NullInt32, если пусто то Valid = false
func NullInt32_DefaultNull[T ~int32](Value T) sql.NullInt32 {
Otvet := sql.NullInt32{}
Otvet.Int32 = int32(Value)
Otvet.Valid = true
if Value == 0 {
Otvet.Valid = false
}
return Otvet
}
// NullInt16_DefaultNull - преобразует значение в sql.NullInt16, если пусто то Valid = false
func NullInt16_DefaultNull[T ~int16](Value T) sql.NullInt16 {
Otvet := sql.NullInt16{}
Otvet.Int16 = int16(Value)
Otvet.Valid = true
if Value == 0 {
Otvet.Valid = false
}
return Otvet
}
// NullTime_DefaultNull - преобразует значение в sql.NullTime, если пусто то Valid = false
func NullTime_DefaultNull[T time.Time | int64](Value T) sql.NullTime {
Otvet := sql.NullTime{}
switch any(Value).(type) {
case time.Time:
v := any(Value).(time.Time)
Otvet.Time = v
Otvet.Valid = true
if v.IsZero() == true {
Otvet.Valid = false
}
case int64:
v := any(Value).(int64)
Time1 := time.Unix(v, 0)
Otvet.Time = Time1
Otvet.Valid = true
if Time1.IsZero() == true {
Otvet.Valid = false
}
}
return Otvet
}
// NullByte_DefaultNull - преобразует значение в sql.NullByte, если пусто то Valid = false
func NullByte_DefaultNull[T ~byte](Value T) sql.NullByte {
Otvet := sql.NullByte{}
Otvet.Byte = byte(Value)
Otvet.Valid = true
if Value == 0 {
Otvet.Valid = false
}
return Otvet
}
// NullFloat64_DefaultNull - преобразует значение в sql.NullFloat64, если пусто то Valid = false
func NullFloat64_DefaultNull[T ~float64](Value T) sql.NullFloat64 {
Otvet := sql.NullFloat64{}
Otvet.Float64 = float64(Value)
Otvet.Valid = true
if Value == 0 {
Otvet.Valid = false
}
return Otvet
}
// NullFloat32_DefaultNull - преобразует значение в sql.NullFloat64, если пусто то Valid = false
func NullFloat32_DefaultNull[T ~float32](Value T) sql.NullFloat64 {
Otvet := sql.NullFloat64{}
Otvet.Float64 = float64(Value)
Otvet.Valid = true
if Value == 0 {
Otvet.Valid = false
}
return Otvet
}
// NullBool_DefaultNull - преобразует значение в sql.NullBool, если пусто то Valid = false
func NullBool_DefaultNull[T ~bool](Value T) sql.NullBool {
Otvet := sql.NullBool{}
Otvet.Bool = bool(Value)
Otvet.Valid = true
if Value == false {
Otvet.Valid = false
}
return Otvet
}