Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
7a543ca
Delete .env
tirathawat Dec 19, 2021
4d160b9
clear
ganinw13120 Dec 21, 2021
0516115
fix: change service_account file name
ganinw13120 Dec 21, 2021
652b64f
merge: merge with develop
tirathawat Dec 23, 2021
d428577
feat: add graceful shutdown
tirathawat Dec 23, 2021
e562b41
Merge pull request #14 from DatabaseCamp-io/feature_graceful_shutdown
tirathawat Dec 23, 2021
d9955ba
ci: add idflags
tirathawat Dec 23, 2021
a078495
ci: change idflags
tirathawat Dec 23, 2021
bbb7ecc
ci: change import path
tirathawat Dec 23, 2021
6ba7df8
ci: fix command link
tirathawat Dec 23, 2021
4be149d
add liveness & readiness probe
tirathawat Dec 23, 2021
e8f22c6
fix: remove live file for liveness probe
tirathawat Dec 24, 2021
75cab65
refactor: refactor entity model
tirathawat Jan 6, 2022
38c5505
refactor: refactor all structure
tirathawat Jan 16, 2022
93e2f2e
feat: add cache
tirathawat Jan 16, 2022
6739e33
fix: remove get user by id cache
tirathawat Jan 16, 2022
7ebeddf
feat: update entry points
ganinw13120 Jan 19, 2022
d42e5d6
deployment
ganinw13120 Jan 21, 2022
f595cc5
feat: add pretest id add overview
tirathawat Jan 22, 2022
d886862
Merge branch 'develop' of https://github.com/DatabaseCamp-io/DATABASE…
tirathawat Jan 22, 2022
188ef9c
feat: add recommendation
tirathawat Jan 23, 2022
17c106b
fix: fix update point bug
tirathawat Jan 23, 2022
a4965a6
deploy redis
ganinw13120 Jan 23, 2022
ed1282b
update image version
ganinw13120 Jan 23, 2022
57a2925
docker-compose downgrade version
ganinw13120 Jan 23, 2022
15c5644
fix: fix logic to check multiple choices answer
tirathawat Jan 24, 2022
b6f2c09
Merge branch 'develop' of https://github.com/DatabaseCamp-io/DATABASE…
tirathawat Jan 24, 2022
48fd063
feat: get spider data
tirathawat Jan 24, 2022
7b0140f
fix: fix exam overview bug
tirathawat Jan 24, 2022
c7aba4e
deploy
ganinw13120 Jan 24, 2022
8087f8c
remove tls ssl support
ganinw13120 Jan 25, 2022
22be418
remove tls ssl support
ganinw13120 Jan 25, 2022
0e3dc65
deploy new version
ganinw13120 Jan 25, 2022
bacbdf7
update port
ganinw13120 Jan 25, 2022
3f3bd83
fix: change spider to profile
tirathawat Jan 25, 2022
85d8459
merge
tirathawat Jan 26, 2022
fcecbe5
deploy: 1.0.21
tirathawat Jan 26, 2022
c19d1f7
fix: check exam bug
tirathawat Jan 26, 2022
fe39f69
deploy: deploy new version
tirathawat Jan 26, 2022
cffa810
feat: add dependency choice & vocab group choice
tirathawat Feb 7, 2022
a8df04a
feat: add more activities
tirathawat Feb 9, 2022
ed7cff6
feat: get peer review activity
tirathawat Feb 9, 2022
0b99f6b
deploy: 1.0.26
tirathawat Feb 9, 2022
33ee5f9
deploy: 1.0.29
tirathawat Feb 9, 2022
f5fbaaa
deploy: 1.0.30
tirathawat Feb 9, 2022
30bf9cb
deploy: 1.0.31
tirathawat Feb 9, 2022
66fe0e1
deploy: 1.0.32
tirathawat Feb 9, 2022
4bd9009
deploy: 1.0.33
tirathawat Feb 9, 2022
33e565d
feat: add peer review
tirathawat Feb 11, 2022
3ed7452
deploy: 1.0.34
tirathawat Feb 11, 2022
de523f7
deploy: 1.0.35
tirathawat Feb 12, 2022
c40356c
deploy: 1.0.36
tirathawat Feb 12, 2022
fe1878b
deploy: 1.0.37
tirathawat Feb 12, 2022
b80315b
deploy: 1.0.38
tirathawat Feb 12, 2022
535c558
deploy: 1.0.39
tirathawat Feb 12, 2022
7622795
deploy: 1.0.40
tirathawat Feb 12, 2022
27ceef5
deploy: 1.0.40
tirathawat Feb 12, 2022
7982a05
deploy: 1.0.42
tirathawat Feb 12, 2022
400f042
deploy: 1.0.44
tirathawat Feb 12, 2022
4ff1e00
deploy: 1.0.45
tirathawat Feb 12, 2022
af97052
deploy: 1.0.46
tirathawat Feb 12, 2022
dfd86cc
deploy: 1.0.47
tirathawat Feb 12, 2022
7b6a202
deploy: 1.0.48
tirathawat Feb 12, 2022
89a5bd0
deploy: 1.0.50
tirathawat Feb 12, 2022
fa5dca6
deploy: 1.0.51
tirathawat Feb 12, 2022
5bb11d8
deploy: 1.0.52
tirathawat Feb 12, 2022
11e9050
deploy:1.0.53
tirathawat Feb 13, 2022
b02deb4
deploy: 1.0.54
tirathawat Feb 13, 2022
4eb7b23
deploy: 1.0.55
tirathawat Feb 13, 2022
4bd1c3d
deploy: 1.0.56
tirathawat Feb 13, 2022
afa3cff
deploy: 1.0.57
tirathawat Feb 13, 2022
bdf2ffc
deploy
ganinw13120 May 8, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed .DS_Store
Binary file not shown.
23 changes: 23 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib

# Test binary, built with `go test -c`
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

# Dependency directories (remove the comment below to include it)
# vendor/

/data


.env
service_account.json

/tmp
Binary file added DatabaseCamp
Binary file not shown.
51 changes: 27 additions & 24 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,25 +1,28 @@
FROM golang:1.16 AS builder

WORKDIR /src

COPY . .

RUN CGO_ENABLED=0 go build -o DatabaseCamp .

FROM alpine:3.13

RUN apk add tzdata
RUN cp /usr/share/zoneinfo/Asia/Bangkok /etc/localtime
RUN echo "Asia/Bangkok" > /etc/timezone

WORKDIR /usr/src/app

COPY --from=builder /src/DatabaseCamp /usr/src/app/DatabaseCamp
COPY --from=builder /src/.env /usr/src/app/.env
COPY --from=builder /src/service_account.json /usr/src/app/service_account.json

RUN apk add dumb-init
ENTRYPOINT ["/usr/bin/dumb-init", "--"]

EXPOSE 8080
FROM golang:1.16 AS builder

WORKDIR /src

COPY . .

RUN CGO_ENABLED=0 go build \
-ldflags "-X 'DatabaseCamp/router.BuildTime=`date "+%Y-%m-%dT%H:%M:%S%Z:00"`'\
-X 'DatabaseCamp/router.BuildCommit=`git rev-parse --short HEAD`'"\
-o DatabaseCamp cmd/server/main.go

FROM alpine:3.13

RUN apk add tzdata
RUN cp /usr/share/zoneinfo/Asia/Bangkok /etc/localtime
RUN echo "Asia/Bangkok" > /etc/timezone

WORKDIR /usr/src/app

COPY --from=builder /src/DatabaseCamp /usr/src/app/DatabaseCamp
COPY --from=builder /src/.env /usr/src/app/.env
COPY --from=builder /src/service_account.json /usr/src/app/service_account.json
RUN mkdir tmp
RUN apk add dumb-init
ENTRYPOINT ["/usr/bin/dumb-init", "--"]

EXPOSE 8080
CMD ["./DatabaseCamp"]
61 changes: 36 additions & 25 deletions cloudbuild.yaml
Original file line number Diff line number Diff line change
@@ -1,25 +1,36 @@
steps:
- name: "gcr.io/cloud-builders/gsutil"
args: ["cp", "gs://databasecamp-private/backend-infrastructure/service_account.json", "./service_account.json"]
- name: "gcr.io/cloud-builders/gsutil"
args: ["cp", "gs://databasecamp-private/backend-infrastructure/.env.main", "./.env"]
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/$TRIGGER_NAME', '.']
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'gcr.io/$PROJECT_ID/$TRIGGER_NAME']
- name: 'gcr.io/cloud-builders/gcloud'
args:
[
'beta',
'run',
'deploy',
'$TRIGGER_NAME',
'--image',
'gcr.io/$PROJECT_ID/$TRIGGER_NAME',
'--region',
'asia-east1',
'--platform',
'managed',
'--quiet']
images:
- gcr.io/$PROJECT_ID/$TRIGGER_NAME
steps:
- name: "gcr.io/cloud-builders/gsutil"
args:
[
"cp",
"gs://databasecamp-private/backend-infrastructure/service_account.json",
"./service_account.json",
]
- name: "gcr.io/cloud-builders/gsutil"
args:
[
"cp",
"gs://databasecamp-private/backend-infrastructure/.env.develop",
"./.env",
]
- name: "gcr.io/cloud-builders/docker"
args: ["build", "-t", "gcr.io/$PROJECT_ID/$TRIGGER_NAME", "."]
- name: "gcr.io/cloud-builders/docker"
args: ["push", "gcr.io/$PROJECT_ID/$TRIGGER_NAME"]
- name: "gcr.io/cloud-builders/gcloud"
args:
[
"beta",
"run",
"deploy",
"$TRIGGER_NAME",
"--image",
"gcr.io/$PROJECT_ID/$TRIGGER_NAME",
"--region",
"asia-east1",
"--platform",
"managed",
"--quiet",
]
images:
- gcr.io/$PROJECT_ID/$TRIGGER_NAME
93 changes: 93 additions & 0 deletions cmd/server/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package main

import (
"context"
"database-camp/internal/infrastructure/application"
"database-camp/internal/infrastructure/database"
"database-camp/internal/infrastructure/environment"
"database-camp/internal/logs"
"database-camp/internal/registry"
"database-camp/internal/routes"
"fmt"
"log"
"net/http"
"os"
"os/signal"
"syscall"
"time"
)

func setupTimeZone() error {
location, err := time.LoadLocation("Asia/Bangkok")
if err != nil {
return err
}
time.Local = location
return nil
}

func main() {

err := environment.New().Load(".env")
if err != nil {
logs.GetInstance().Error(err)
return
}

err = setupTimeZone()
if err != nil {
logs.GetInstance().Error(err)
return
}

db := database.GetMySqlDBInstance()
err = db.OpenConnection()
if err != nil {
logs.GetInstance().Error(err)
return
}
defer db.CloseConnection()

app := application.NewFiberApp()
regis := registry.Regis()

routes.NewRouter(app, regis)

liveName := fmt.Sprintf("tmp/live%d", os.Getpid())

live, err := os.Create(liveName)
if err != nil {
logs.GetInstance().Error(err)
return
}

ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
defer stop()

go func() {
if err := app.Listen(":" + os.Getenv("PORT")); err != nil && err != http.ErrServerClosed {
log.Fatalf("listen: %s\n", err)
}
}()

<-ctx.Done()
stop()

err = live.Close()
if err != nil {
logs.GetInstance().Error(err)
return
}

err = os.Remove(liveName)
if err != nil {
logs.GetInstance().Error(err)
return
}

err = app.Shutdown()
if err != nil {
logs.GetInstance().Error(err)
return
}
}
Loading