Skip to content

Commit 15db09a

Browse files
authored
Merge branch 'dev' into feature/accounting
2 parents 9379014 + c473327 commit 15db09a

43 files changed

Lines changed: 1042 additions & 596 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,49 @@
1-
name: 'Unit Tests'
1+
name: Unit-Tests-No-Dagger
22

33
on: pull_request
44

55
jobs:
6+
7+
68
Testing:
79
runs-on: ubuntu-latest
10+
services:
11+
postgres:
12+
image: postgres:13.7-alpine
13+
ports:
14+
- "5432:5432"
15+
env:
16+
POSTGRES_PASSWORD: postgres
17+
POSTGRES_DB: delta-eats
18+
POSTGRES_USER: postgres
19+
20+
821
steps:
922
- uses: actions/checkout@v2
10-
11-
- name: Install Go
23+
24+
- name: Set up Go
1225
uses: actions/setup-go@v2
1326
with:
14-
go-version: '>=1.20'
15-
16-
- name: Install Dagger CLI
27+
go-version: 1.21.5
28+
29+
- name: Install go deps
30+
run: |
31+
go install github.com/bufbuild/buf/cmd/buf@latest
32+
go install github.com/pressly/goose/v3/cmd/goose@latest
33+
go mod tidy
34+
go get github.com/99designs/gqlgen
35+
go get github.com/go-jet/jet/v2/cmd/jet@v2.10.1
36+
37+
- name: apply migrations
38+
env:
39+
DATABASE_URL: postgres://postgres:postgres@localhost:5432/delta-eats?sslmode=disable
40+
run: |
41+
cd migrations
42+
goose postgres postgres://postgres:postgres@localhost:5432/delta-eats?sslmode=disable up
43+
44+
- name: generate modules and tables
1745
run: |
18-
cd /usr/local
19-
curl -L https://dl.dagger.io/dagger/install.sh | sh
46+
go run github.com/go-jet/jet/v2/cmd/jet -dsn=postgres://postgres:postgres@localhost:5432/delta-eats?sslmode=disable -path=./internal/ports/database/gen
2047
21-
- name: Run unit tests
22-
run: dagger run go run cmd/ci_cd/main.go test
23-
48+
- name: testing
49+
run: go test -v ./...

‎Tiltfile‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,5 @@ docker_build_with_restart('delta-eats-migrations',
7272
)
7373

7474

75-
k8s_resource("delta-eats", port_forwards=["0.0.0.0:8080:8080"], resource_deps=['postgresql'], labels=["BE"])
75+
k8s_resource("delta-eats", port_forwards=["0.0.0.0:8080:8080"], resource_deps=['postgresql'], labels=["BE"])
76+
k8s_resource('delta-eats-cron', labels=["BE"], resource_deps=['postgresql'])

‎ci/delta-eats.yaml‎

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,59 @@ spec:
2626
value: "false"
2727
- name: VALIDATOR_URL
2828
value: https://validate.menuroo.cz
29+
- name: ENABLE_FILE_LOGGER
30+
value: "true"
31+
- name: ENABLE_DEBUG_LOGGER
32+
value: "false"
33+
- name: FILE_LOG_OUTPUT
34+
value: "stdout"
35+
---
36+
apiVersion: apps/v1
37+
kind: Deployment
38+
metadata:
39+
name: delta-eats-cron
40+
labels:
41+
app: delta-eats-cron
42+
spec:
43+
replicas: 1
44+
strategy:
45+
rollingUpdate:
46+
maxSurge: 1
47+
maxUnavailable: 1
48+
type: RollingUpdate
49+
selector:
50+
matchLabels:
51+
app: delta-eats-cron
52+
template:
53+
metadata:
54+
labels:
55+
app: delta-eats-cron
56+
spec:
57+
containers:
58+
- name: delta-eats-cron
59+
image: delta-eats
60+
env:
61+
- name: MODE
62+
value: cron
63+
- name: DATABASE_URL
64+
value: "postgres://postgres:postgres@postgresql-delta-eats:5432/delta-eats?sslmode=disable"
65+
- name: FIO_ACTIVE
66+
value: "true"
67+
- name: ENABLE_FILE_LOGGER
68+
value: "true"
69+
- name: ENABLE_DEBUG_LOGGER
70+
value: "false"
71+
---
72+
apiVersion: v1
73+
kind: Service
74+
metadata:
75+
name: delta-eats
76+
labels:
77+
app: delta-eats
78+
spec:
79+
ports:
80+
- port: 8080
81+
targetPort: 8080
82+
protocol: TCP
83+
selector:
84+
app: delta-eats

‎cmd/main.go‎

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,29 @@ package main
55
//go:generate go run github.com/go-jet/jet/v2/cmd/jet -dsn=postgres://postgres:postgres@localhost:5434/delta-eats?sslmode=disable -path=../internal/ports/database/gen
66
//go:generate go run github.com/99designs/gqlgen generate
77
import (
8-
"delta-eats/cmd/server"
9-
"fmt"
8+
"delta-eats/cmd/runner"
9+
"log"
1010
"os"
1111
)
1212

1313
func main() {
14-
err := server.Run()
15-
if err != nil {
16-
fmt.Println(err)
17-
os.Exit(1)
14+
services := os.Args[1:]
15+
if len(services) == 0 {
16+
services = []string{
17+
os.Getenv("MODE"),
18+
}
19+
}
20+
if services[0] == "cron" {
21+
err := runner.SetupCron()
22+
if err != nil {
23+
log.Println("Error: ", err)
24+
os.Exit(1)
25+
}
26+
} else {
27+
err := runner.Serve()
28+
if err != nil {
29+
log.Println("Error: ", err)
30+
os.Exit(1)
31+
}
1832
}
1933
}

‎cmd/runner/cron.go‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package runner
2+
3+
import (
4+
"delta-eats/internal/config"
5+
6+
"github.com/nextap-solutions/goNextService"
7+
)
8+
9+
func SetupCron() error {
10+
configuration := config.LoadConfig()
11+
menurooApi, err := setupService(configuration)
12+
if err != nil {
13+
return err
14+
}
15+
app := goNextService.NewApplications(menurooApi.cron, menurooApi.cleanup)
16+
return app.Run()
17+
}

‎cmd/runner/runner.go‎

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package runner
2+
3+
import (
4+
"context"
5+
"delta-eats/graph/generated"
6+
"delta-eats/internal/config"
7+
"delta-eats/internal/middleware"
8+
"delta-eats/internal/setup"
9+
"encoding/json"
10+
"log"
11+
"net/http"
12+
"time"
13+
14+
"github.com/99designs/gqlgen/graphql/handler"
15+
"github.com/99designs/gqlgen/graphql/playground"
16+
"github.com/go-co-op/gocron"
17+
"github.com/gorilla/mux"
18+
"github.com/nextap-solutions/goNextService"
19+
"github.com/nextap-solutions/goNextService/components"
20+
"github.com/rs/cors"
21+
"go.uber.org/zap"
22+
)
23+
24+
type MenurooServerComponents struct {
25+
httpServer goNextService.Component
26+
cron goNextService.Component
27+
cleanup goNextService.Component
28+
}
29+
30+
func Serve() error {
31+
configuration := config.LoadConfig()
32+
menurooApi, err := setupService(configuration)
33+
if err != nil {
34+
return err
35+
}
36+
app := goNextService.NewApplications(menurooApi.httpServer)
37+
return app.Run()
38+
}
39+
40+
func setupService(configuration *config.Config) (*MenurooServerComponents, error) {
41+
logger := setup.InitLogger(*configuration)
42+
s, _ := json.MarshalIndent(configuration, "", "\t")
43+
zap.L().Info("Logger initialized successfully")
44+
logger.Info(string(s))
45+
dbConn, err := setup.SetupDb(configuration)
46+
if err != nil {
47+
log.Println("Error while connecting to database")
48+
return nil, err
49+
}
50+
51+
resolver, err := setup.NewResolver(dbConn, *configuration)
52+
if err != nil {
53+
return nil, err
54+
}
55+
srv := handler.NewDefaultServer(generated.NewExecutableSchema(generated.Config{
56+
Resolvers: resolver,
57+
}))
58+
59+
router := mux.NewRouter()
60+
router.Use(middleware.Authentication(resolver.AuthUsecase))
61+
router.Handle("/", playground.Handler("GraphQL playground", "/query"))
62+
router.Handle("/query", srv)
63+
corsMiddleware := cors.New(cors.Options{
64+
AllowedOrigins: []string{"*"},
65+
AllowedHeaders: []string{"*"},
66+
AllowCredentials: true,
67+
})
68+
69+
handler := corsMiddleware.Handler(router)
70+
api := http.Server{
71+
Addr: "0.0.0.0:" + configuration.Server.Port,
72+
ReadTimeout: configuration.Server.ReadTimeout,
73+
WriteTimeout: configuration.Server.WriteTimeout,
74+
Handler: handler,
75+
}
76+
httpComponent := components.NewHttpComponent(handler, components.WithHttpServer(&api))
77+
78+
scheduler := gocron.NewScheduler(time.UTC)
79+
_, err = scheduler.Cron(configuration.FioConfig.RefreshJob).
80+
Tag("BankRefresh").
81+
SingletonMode().
82+
Do(resolver.MailUsecase.ParseAndStorePayments)
83+
if err != nil {
84+
return nil, err
85+
}
86+
87+
return &MenurooServerComponents{
88+
httpServer: httpComponent,
89+
cron: components.NewCronComponent(scheduler),
90+
cleanup: components.NewLifecycleComponent(nil, func(ctx context.Context) error {
91+
select {}
92+
}, []components.LifeCycleFunc{
93+
func(ctx context.Context) error {
94+
return nil
95+
},
96+
}),
97+
}, nil
98+
}

‎cmd/server/runner.go‎

Lines changed: 0 additions & 102 deletions
This file was deleted.

0 commit comments

Comments
 (0)