Initial commit

This commit is contained in:
Albert
2025-12-11 02:36:03 +04:00
parent 16e825a0e7
commit 2bcdfc93d6
45 changed files with 9304 additions and 78 deletions
+78
View File
@@ -0,0 +1,78 @@
package main
import (
"database/sql"
"embed"
"errors"
"flag"
"log"
"datarush/internal/lms/config"
"github.com/golang-migrate/migrate/v4"
"github.com/golang-migrate/migrate/v4/database/postgres"
"github.com/golang-migrate/migrate/v4/source/iofs"
)
//go:embed migrations/*.sql
var migrationsFS embed.FS
func main() {
var cmd string
flag.StringVar(&cmd, "cmd", "up", "migration command: up|down|force|version")
flag.Parse()
cfg, err := config.Load()
if err != nil {
log.Fatalf("failed to load config: %v", err)
}
db, err := sql.Open("postgres", cfg.BuildPostgresDSN())
if err != nil {
log.Fatalf("open db: %v", err)
}
defer db.Close()
drv, err := postgres.WithInstance(db, &postgres.Config{})
if err != nil {
log.Printf("postgres driver: %v", err)
return
}
src, err := iofs.New(migrationsFS, "migrations")
if err != nil {
log.Printf("iofs source: %v", err)
return
}
m, err := migrate.NewWithInstance("iofs", src, "postgres", drv)
if err != nil {
log.Printf("migrate NewWithInstance: %v", err)
return
}
switch cmd {
case "up":
if err := m.Up(); err != nil && !errors.Is(err, migrate.ErrNoChange) {
log.Printf("m.Up failed: %v", err)
return
}
log.Println("migrations applied (up)")
case "down":
if err := m.Steps(-1); err != nil {
log.Printf("m.Steps(-1) failed: %v", err)
return
}
log.Println("stepped down 1 migration")
case "version":
v, dirty, verr := m.Version()
if verr != nil {
log.Printf("version: %v", verr)
return
}
log.Printf("version: %d dirty: %v\n", v, dirty)
default:
log.Printf("unknown cmd: %s", cmd)
}
}
@@ -0,0 +1 @@
drop table if exists orders;
@@ -0,0 +1,5 @@
create table if not exists orders (
id uuid primary key,
item varchar(500) not null,
quantity integer not null check (quantity > 0)
);
+35
View File
@@ -0,0 +1,35 @@
package main
import (
"log"
"os"
"os/signal"
"syscall"
"datarush/internal/lms/config"
"datarush/internal/lms/server"
)
func main() {
cfg, err := config.Load()
if err != nil {
log.Fatalf("failed to load config: %v", err)
}
srv := server.New(cfg)
srv.RegisterServices()
go func() {
if err := srv.Start(); err != nil {
log.Fatalf("failed to start server: %v", err)
}
}()
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
log.Println("shutting down server...")
srv.Stop()
log.Println("server stopped")
}