chore: add storage logger and handler in /int
This commit is contained in:
7
backend/internal/handlers/post_handlers.go
Normal file
7
backend/internal/handlers/post_handlers.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"gitea.d3m0k1d.ru/d3m0k1d/d3m0k1d.ru/backend/internal/logger"
|
||||
)
|
||||
|
||||
var log = logger.New(false)
|
||||
45
backend/internal/logger/logger.go
Normal file
45
backend/internal/logger/logger.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"io"
|
||||
"log/slog"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
)
|
||||
|
||||
type Logger struct {
|
||||
*slog.Logger
|
||||
}
|
||||
|
||||
func New(debug bool) *Logger {
|
||||
logDir := "/var/log/banforge"
|
||||
if err := os.MkdirAll(logDir, 0750); err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
fileWriter := &lumberjack.Logger{
|
||||
Filename: filepath.Join(logDir, "banforge.log"),
|
||||
MaxSize: 500,
|
||||
MaxBackups: 3,
|
||||
MaxAge: 28,
|
||||
Compress: true,
|
||||
}
|
||||
|
||||
var level slog.Level
|
||||
if debug {
|
||||
level = slog.LevelDebug
|
||||
} else {
|
||||
level = slog.LevelInfo
|
||||
}
|
||||
multiWriter := io.MultiWriter(fileWriter, os.Stdout)
|
||||
|
||||
handler := slog.NewTextHandler(multiWriter, &slog.HandlerOptions{
|
||||
Level: level,
|
||||
})
|
||||
|
||||
return &Logger{
|
||||
Logger: slog.New(handler),
|
||||
}
|
||||
}
|
||||
32
backend/internal/storage/db.go
Normal file
32
backend/internal/storage/db.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"gitea.d3m0k1d.ru/d3m0k1d/d3m0k1d.ru/backend/internal/logger"
|
||||
_ "modernc.org/sqlite"
|
||||
"os"
|
||||
)
|
||||
|
||||
var db_path = os.Getenv("DB_PATH")
|
||||
|
||||
func CreateTables() error {
|
||||
logger := logger.New(false)
|
||||
db, err := sql.Open("sqlite", db_path)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
return err
|
||||
}
|
||||
_, err = db.Exec(Migrations)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
return err
|
||||
}
|
||||
|
||||
defer func() {
|
||||
err = db.Close()
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
}()
|
||||
return nil
|
||||
}
|
||||
10
backend/internal/storage/migrations.go
Normal file
10
backend/internal/storage/migrations.go
Normal file
@@ -0,0 +1,10 @@
|
||||
package storage
|
||||
|
||||
const Migrations = `
|
||||
CREATE TABLE IF NOT EXISTS posts(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT
|
||||
title TEXT NOT NULL
|
||||
content TEXT NOT NULL
|
||||
CREATED_AT DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
`
|
||||
8
backend/internal/storage/models.go
Normal file
8
backend/internal/storage/models.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package storage
|
||||
|
||||
type Post struct {
|
||||
ID int `db:"id"`
|
||||
Title string `db:"title"`
|
||||
Content string `db:"content"`
|
||||
CreatedAt string `db:"created_at"`
|
||||
}
|
||||
Reference in New Issue
Block a user