From ce15a6ce532145a7b6b48836c2cbc5574c804419 Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Fri, 3 Nov 2023 00:16:43 +0700 Subject: [PATCH] Added: timezone support --- api/requests.http | 6 +++--- db/migrations/20231020230401_ttl_support.sql | 2 +- deployments/docker-compose/docker-compose.dev.yml | 7 ++++++- internal/config/config.go | 14 ++++++++------ internal/config/module.go | 1 + internal/infra/db/config.go | 1 + internal/infra/db/db.go | 5 +++-- 7 files changed, 23 insertions(+), 13 deletions(-) diff --git a/api/requests.http b/api/requests.http index 057bccf..f4d2324 100644 --- a/api/requests.http +++ b/api/requests.http @@ -16,16 +16,16 @@ Authorization: Basic IUGFXE:v4ejpbeydvjo1h { "message": "Test", - "ttl": {{$randomInt 0 86400}}, + "ttl": 60, "phoneNumbers": [ "79990001234" ] } ### -GET {{baseUrl}}/api/3rdparty/v1/message/pRl1wf_yez5TikJb_xemU HTTP/1.1 +GET {{baseUrl}}/api/3rdparty/v1/message/iZo6T9hw7wTuKLQUIP29I HTTP/1.1 Authorization: Basic IUGFXE:v4ejpbeydvjo1h ### GET {{baseUrl}}/api/mobile/v1/message HTTP/1.1 -Authorization: Bearer KuvE4LBXzvy8QO2ZXDDMP \ No newline at end of file +Authorization: Bearer KuvE4LBXzvy8QO2ZXDDMP diff --git a/db/migrations/20231020230401_ttl_support.sql b/db/migrations/20231020230401_ttl_support.sql index a0191f8..6c83c3f 100644 --- a/db/migrations/20231020230401_ttl_support.sql +++ b/db/migrations/20231020230401_ttl_support.sql @@ -1,7 +1,7 @@ -- +goose Up -- +goose StatementBegin ALTER TABLE `messages` -ADD `valid_until` datetime; +ADD `valid_until` datetime(3) DEFAULT NULL; -- +goose StatementEnd --- -- +goose Down diff --git a/deployments/docker-compose/docker-compose.dev.yml b/deployments/docker-compose/docker-compose.dev.yml index 06228e8..c8f199a 100644 --- a/deployments/docker-compose/docker-compose.dev.yml +++ b/deployments/docker-compose/docker-compose.dev.yml @@ -9,10 +9,15 @@ services: container_name: sms-gateway environment: - DEBUG=1 + - HTTP__LISTEN=:3000 + env_file: + - .env ports: - - "4000:3000" + - "3000:3000" - "3456:2345" volumes: - "../..:/app" - "/tmp/sms-gateway/go-cache:/go/pkg" + extra_hosts: + - "host.docker.internal:host-gateway" restart: 'no' \ No newline at end of file diff --git a/internal/config/config.go b/internal/config/config.go index 78861c2..ca3e7ad 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -16,15 +16,16 @@ type Config struct { } type HTTP struct { - Listen string `yaml:"listen"` + Listen string `yaml:"listen" envconfig:"HTTP__LISTEN"` } type Database struct { - Host string `yaml:"host"` - Port int `yaml:"port"` - User string `yaml:"user"` - Password string `yaml:"password"` - Database string `yaml:"database"` + Host string `yaml:"host" envconfig:"DATABASE__HOST"` + Port int `yaml:"port" envconfig:"DATABASE__PORT"` + User string `yaml:"user" envconfig:"DATABASE__USER"` + Password string `yaml:"password" envconfig:"DATABASE__PASSWORD"` + Database string `yaml:"database" envconfig:"DATABASE__DATABASE"` + Timezone string `yaml:"timezone" envconfig:"DATABASE__TIMEZONE"` } type FCMConfig struct { @@ -41,6 +42,7 @@ var defaultConfig = Config{ User: "sms", Password: "sms", Database: "sms", + Timezone: "UTC", }, FCM: FCMConfig{ CredentialsJSON: "", diff --git a/internal/config/module.go b/internal/config/module.go index d0d8b64..d1cc9fe 100644 --- a/internal/config/module.go +++ b/internal/config/module.go @@ -32,6 +32,7 @@ var Module = fx.Module( User: cfg.Database.User, Password: cfg.Database.Password, Database: cfg.Database.Database, + Timezone: cfg.Database.Timezone, } }), fx.Provide(func(cfg Config) services.PushServiceConfig { diff --git a/internal/infra/db/config.go b/internal/infra/db/config.go index 2e248c6..a083728 100644 --- a/internal/infra/db/config.go +++ b/internal/infra/db/config.go @@ -14,6 +14,7 @@ type Config struct { User string Password string Database string + Timezone string } // Helper function to set default values diff --git a/internal/infra/db/db.go b/internal/infra/db/db.go index 9cf4da9..46dd07d 100644 --- a/internal/infra/db/db.go +++ b/internal/infra/db/db.go @@ -3,6 +3,7 @@ package db import ( "fmt" "log" + "net/url" sql "github.com/go-sql-driver/mysql" "gorm.io/driver/mysql" @@ -33,7 +34,7 @@ func makeConfig(params Params) *gorm.Config { func makeDSN(cfg Config) string { cfg = configDefault(cfg) return fmt.Sprintf( - "%s:%s@tcp(%s:%d)/%s?charset=utf8mb4,utf8&parseTime=true&tls=preferred", - cfg.User, cfg.Password, cfg.Host, cfg.Port, cfg.Database, + "%s:%s@tcp(%s:%d)/%s?charset=utf8mb4,utf8&parseTime=true&loc=%s&tls=preferred", + cfg.User, cfg.Password, cfg.Host, cfg.Port, cfg.Database, url.QueryEscape(cfg.Timezone), ) }