initial commit

This commit is contained in:
2025-12-07 11:32:45 +01:00
commit c3daed67ac
35 changed files with 1315 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
package http_utils
import (
"encoding/json"
"log"
"net/http"
"github.com/go-chi/chi/v5"
"github.com/google/uuid"
)
func RespondWithJSON(w http.ResponseWriter, code int, payload interface{}) {
response, _ := json.Marshal(payload)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(code)
w.Write(response)
}
func GetParam(r *http.Request, name string) string {
return chi.URLParam(r, name)
}
func GetParamUUID(r *http.Request, name string) (uuid.UUID, error) {
return uuid.Parse(GetParam(r, name))
}
type StartGenericHTTPServerContext struct {
Router *chi.Mux
}
func StartGenericHTTPServer(ctx StartGenericHTTPServerContext) {
r := chi.NewRouter()
r.Use(LoggingMiddleware)
r.Mount("/", ctx.Router)
http.Handle("/", r)
log.Fatal(http.ListenAndServe(":80", r))
}
+13
View File
@@ -0,0 +1,13 @@
package http_utils
import (
"fmt"
"net/http"
)
func LoggingMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Printf("%s %s\n", r.Method, r.RequestURI)
next.ServeHTTP(w, r)
})
}
+48
View File
@@ -0,0 +1,48 @@
package mysql_utils
import (
"database/sql"
"github.com/DATA-DOG/go-sqlmock"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type DBMockSuite struct {
DB *gorm.DB
Mock sqlmock.Sqlmock
}
func NewDBMockSuite() *DBMockSuite {
var (
db *sql.DB
gormdb *gorm.DB
mock sqlmock.Sqlmock
err error
)
db, mock, err = sqlmock.New()
if err != nil {
panic("SQL Mock error")
}
mock.ExpectQuery("SELECT VERSION()").WithArgs().WillReturnRows(sqlmock.NewRows([]string{"exists"}).AddRow(true))
gormdb, err = gorm.Open(mysql.New(mysql.Config{
DSN: "sqlmock_db_0",
DriverName: "mysql",
Conn: db,
}), &gorm.Config{})
if err != nil {
panic("GORM open error")
}
// gormdb.AutoMigrate()
return &DBMockSuite{
DB: gormdb,
Mock: mock,
}
}
+38
View File
@@ -0,0 +1,38 @@
package mysql_utils
import (
"fmt"
"os"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type DbConnectData struct {
User string
Password string
Host string
Port string
Database string
}
func getDbConnectData() DbConnectData {
return DbConnectData{
User: os.Getenv("DB_USER"),
Password: os.Getenv("DB_PASSWORD"),
Host: os.Getenv("DB_HOST"),
Port: os.Getenv("DB_PORT"),
Database: os.Getenv("DB_NAME"),
}
}
func Init() *gorm.DB {
c := getDbConnectData()
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", c.User, c.Password, c.Host, c.Port, c.Database)
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
return db
}