refactor sqlite queue
This commit is contained in:
35
cmd/main.go
35
cmd/main.go
@@ -1,14 +1,17 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"github.com/google/uuid"
|
||||
httpSwagger "github.com/swaggo/http-swagger"
|
||||
_ "go-nkode/docs"
|
||||
"go-nkode/internal/api"
|
||||
"go-nkode/internal/db"
|
||||
"go-nkode/internal/email"
|
||||
"go-nkode/internal/models"
|
||||
"go-nkode/internal/repository"
|
||||
sqliteQueue "go-nkode/internal/sqlc"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
@@ -37,24 +40,42 @@ const (
|
||||
// @securityDefinitions.apiKey ApiKeyAuth
|
||||
// @in header
|
||||
// @name Authorization
|
||||
|
||||
func main() {
|
||||
dbPath := os.Getenv("SQLITE_DB")
|
||||
if dbPath == "" {
|
||||
log.Fatalf("SQLITE_DB=/path/to/nkode.db not set")
|
||||
log.Fatal("SQLITE_DB=/path/to/nkode.db not set")
|
||||
}
|
||||
sqlitedb, err := db.NewSqliteDB(dbPath)
|
||||
|
||||
sqliteDb, err := sql.Open("sqlite3", dbPath)
|
||||
if err != nil {
|
||||
log.Fatalf("%v", err)
|
||||
log.Fatalf("failed to open database: %v", err)
|
||||
}
|
||||
defer sqlitedb.Close()
|
||||
|
||||
if err := sqliteDb.Ping(); err != nil {
|
||||
log.Fatalf("failed to connect to database: %v", err)
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
queue, err := sqliteQueue.NewQueue(sqliteDb, ctx)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
queue.Start()
|
||||
|
||||
defer func(queue *sqliteQueue.Queue) {
|
||||
if err := queue.Stop(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}(queue)
|
||||
|
||||
sesClient := email.NewSESClient()
|
||||
emailQueue := email.NewEmailQueue(emailQueueBufferSize, maxEmailsPerSecond, &sesClient)
|
||||
emailQueue.Start()
|
||||
defer emailQueue.Stop()
|
||||
|
||||
nkodeApi := api.NewNKodeAPI(sqlitedb, emailQueue)
|
||||
sqlitedb := repository.NewSqliteRepository(queue, ctx)
|
||||
nkodeApi := api.NewNKodeAPI(&sqlitedb, emailQueue)
|
||||
|
||||
AddDefaultCustomer(nkodeApi)
|
||||
handler := api.NKodeHandler{Api: nkodeApi}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user