|
|
|
@ -6,6 +6,7 @@ import (
|
|
|
|
|
"strings"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/joho/godotenv"
|
|
|
|
|
_ "github.com/mattn/go-sqlite3"
|
|
|
|
|
"gorm.io/driver/sqlite"
|
|
|
|
|
"gorm.io/gorm"
|
|
|
|
@ -19,13 +20,24 @@ type UrlCache struct {
|
|
|
|
|
Code string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func Logging() (newLogger logger.Interface) {
|
|
|
|
|
file, err := os.Create("GoShortLog.log")
|
|
|
|
|
type CacheDB struct {
|
|
|
|
|
Gormlog logger.Interface
|
|
|
|
|
DbName string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func InitDB() (ctx *CacheDB) {
|
|
|
|
|
var db CacheDB
|
|
|
|
|
err := godotenv.Load(".env")
|
|
|
|
|
if err != nil {
|
|
|
|
|
// Handle error
|
|
|
|
|
panic(err)
|
|
|
|
|
log.Fatalf("Unable to parse env file: %v", err)
|
|
|
|
|
}
|
|
|
|
|
newLogger = logger.New(
|
|
|
|
|
file, err := os.Create(os.Getenv("LOGFILE"))
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatalf("Unable to create logfile: %v", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
db.DbName = os.Getenv("DBNAME")
|
|
|
|
|
db.Gormlog = logger.New(
|
|
|
|
|
log.New(file, "\r\n", log.LstdFlags), // io writer
|
|
|
|
|
logger.Config{
|
|
|
|
|
SlowThreshold: time.Second, // Slow SQL threshold
|
|
|
|
@ -34,12 +46,25 @@ func Logging() (newLogger logger.Interface) {
|
|
|
|
|
Colorful: false, // Disable color
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
return &db
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func Logging() (newLogger logger.Interface) {
|
|
|
|
|
file, err := os.Create("GoShortLog.log")
|
|
|
|
|
if err != nil {
|
|
|
|
|
// Handle error
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
newLogger = logger.New(
|
|
|
|
|
log.New(file, "\r\n", log.LstdFlags), // io writer
|
|
|
|
|
logger.Config{},
|
|
|
|
|
)
|
|
|
|
|
return newLogger
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func Cache(url string, short string, code string) (bool, error) {
|
|
|
|
|
logger := Logging()
|
|
|
|
|
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{
|
|
|
|
|
func (c *CacheDB) Cache(url string, short string, code string) (bool, error) {
|
|
|
|
|
logger := c.Gormlog
|
|
|
|
|
db, err := gorm.Open(sqlite.Open(c.DbName), &gorm.Config{
|
|
|
|
|
Logger: logger,
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
@ -54,10 +79,10 @@ func Cache(url string, short string, code string) (bool, error) {
|
|
|
|
|
return true, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func Lookup(url string) (string, error) {
|
|
|
|
|
func (c *CacheDB) Lookup(url string) (string, error) {
|
|
|
|
|
var obj UrlCache
|
|
|
|
|
logger := Logging()
|
|
|
|
|
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{
|
|
|
|
|
logger := c.Gormlog
|
|
|
|
|
db, err := gorm.Open(sqlite.Open(c.DbName), &gorm.Config{
|
|
|
|
|
Logger: logger,
|
|
|
|
|
})
|
|
|
|
|
if !strings.HasPrefix(url, "http") {
|
|
|
|
@ -72,10 +97,10 @@ func Lookup(url string) (string, error) {
|
|
|
|
|
return obj.Code, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetUrl(code string) (string, error) {
|
|
|
|
|
func (c *CacheDB) GetUrl(code string) (string, error) {
|
|
|
|
|
var obj UrlCache
|
|
|
|
|
logger := Logging()
|
|
|
|
|
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{
|
|
|
|
|
logger := c.Gormlog
|
|
|
|
|
db, err := gorm.Open(sqlite.Open(c.DbName), &gorm.Config{
|
|
|
|
|
Logger: logger,
|
|
|
|
|
})
|
|
|
|
|
db.AutoMigrate(&UrlCache{})
|
|
|
|
|