Compare commits

...

5 Commits
main ... dev

Author SHA1 Message Date
Arnaud Delcasse 504702346a Remove fmt.Prinln and add Zerolog logging system
Build and Push Docker Image / build_and_push (push) Successful in 1m34s Details
2024-11-11 20:16:20 +01:00
Nicolas CARON 23c7b50d9b test actions
Build and Push Docker Image / build_and_push (push) Successful in 1m34s Details
2024-04-05 12:14:04 +02:00
Nicolas CARON 3028dde959 add .gitea/worflows/build.yml 2024-04-04 12:22:42 +02:00
mfrigo c71851add2 add Getsubscriber and getsubscriptionbyuser in comments for the moment to avoid crashing 2023-12-08 13:33:13 +01:00
mfrigo 86df552bd1 GetSubscriber in Mongodb 2023-12-06 16:12:29 +01:00
8 changed files with 206 additions and 88 deletions

View File

@ -0,0 +1,81 @@
name: Build and Push Docker Image
on:
push:
tags:
- '*'
branches:
- main
- dev
jobs:
build_and_push:
runs-on: ubuntu-latest
steps:
- name: Install Docker
run: |
apt-get update
apt-get install -y docker.io
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set Kubernetes Context
uses: azure/k8s-set-context@v4
with:
method: kubeconfig
kubeconfig: ${{secrets.buildx_kubeconfig}}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: kubernetes
driver-opts: |
namespace=gitea
- name: Login to Docker Registry
uses: docker/login-action@v3
with:
registry: git.coopgo.io
username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Extract metadata (tags, labels) for Docker image
id: metadata
uses: docker/metadata-action@v3
with:
images: git.coopgo.io/${{gitea.repository}}
tags: |
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
flavor: |
latest=auto
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: |
${{ steps.metadata.outputs.tags }}
build-args: |
ACCESS_TOKEN_USR=${{gitea.actor}}
ACCESS_TOKEN_PWD=${{gitea.token}}
# BUILD WITH KANIKO
# - name: Kaniko build and push
# uses: aevea/action-kaniko@master
# with:
# build_file: Dockerfile
# registry: git.coopgo.io
# username: ${{secrets.registry_user}}
# password: ${{secrets.registry_token}}
# image: ${{gitea.repository}}
# tag: ${{gitea.ref_name}}
# cache: true
# cache_registry: git.coopgo.io/${{gitea.repository}}/cache
# extra-args: |
# ACCESS_TOKEN_USR=${{gitea.actor}}
# ACCESS_TOKEN_PWD=${{gitea.token}}

5
go.mod
View File

@ -25,12 +25,15 @@ require (
github.com/hashicorp/hcl/v2 v2.10.0 // indirect github.com/hashicorp/hcl/v2 v2.10.0 // indirect
github.com/klauspost/compress v1.13.6 // indirect github.com/klauspost/compress v1.13.6 // indirect
github.com/magiconair/properties v1.8.6 // indirect github.com/magiconair/properties v1.8.6 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml v1.9.5 // indirect
github.com/pelletier/go-toml/v2 v2.0.1 // indirect github.com/pelletier/go-toml/v2 v2.0.1 // indirect
github.com/pkg/errors v0.9.1 // indirect github.com/pkg/errors v0.9.1 // indirect
github.com/rs/zerolog v1.33.0 // indirect
github.com/spf13/afero v1.8.2 // indirect github.com/spf13/afero v1.8.2 // indirect
github.com/spf13/cast v1.5.0 // indirect github.com/spf13/cast v1.5.0 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect
@ -44,7 +47,7 @@ require (
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect
golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2 // indirect golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2 // indirect
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
golang.org/x/sys v0.5.0 // indirect golang.org/x/sys v0.27.0 // indirect
golang.org/x/text v0.8.0 // indirect golang.org/x/text v0.8.0 // indirect
google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd // indirect google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd // indirect
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect

19
go.sum
View File

@ -61,6 +61,7 @@ github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XP
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@ -82,6 +83,7 @@ github.com/go-openapi/inflect v0.19.0 h1:9jCH9scKIbHeV9m12SmPilScz6krDxKRasNNSNP
github.com/go-openapi/inflect v0.19.0/go.mod h1:lHpZVlpIQqLyKwJ4N+YSc9hchQy/i12fJykb83CRBH4= github.com/go-openapi/inflect v0.19.0/go.mod h1:lHpZVlpIQqLyKwJ4N+YSc9hchQy/i12fJykb83CRBH4=
github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68=
github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@ -109,7 +111,6 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
@ -176,6 +177,12 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM=
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
@ -195,6 +202,9 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=
@ -387,8 +397,13 @@ golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s=
golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@ -555,8 +570,6 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

View File

@ -2,9 +2,9 @@ package grpcapi
import ( import (
"encoding/json" "encoding/json"
"fmt"
"git.coopgo.io/coopgo-platform/agenda/storage" "git.coopgo.io/coopgo-platform/agenda/storage"
"github.com/rs/zerolog/log"
"google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/encoding/protojson"
"google.golang.org/protobuf/types/known/structpb" "google.golang.org/protobuf/types/known/structpb"
"google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/timestamppb"
@ -12,23 +12,23 @@ import (
func (e Event) ToStorageType() storage.Event { func (e Event) ToStorageType() storage.Event {
event := storage.Event{ event := storage.Event{
ID: e.Id, ID: e.Id,
Namespace: e.Namespace, Namespace: e.Namespace,
Owners: e.Owners, Owners: e.Owners,
RestrictedTo: e.RestrictedTo, RestrictedTo: e.RestrictedTo,
Type: e.Type, Type: e.Type,
Name: e.Name, Name: e.Name,
Description: e.Description, Description: e.Description,
Startdate: e.Startdate.AsTime(), Startdate: e.Startdate.AsTime(),
Enddate: e.Enddate.AsTime(), Enddate: e.Enddate.AsTime(),
Starttime: e.Starttime, Starttime: e.Starttime,
Endtime: e.Endtime, Endtime: e.Endtime,
Allday: e.Allday, Allday: e.Allday,
MaxSubscribers: e.MaxSubscribers, MaxSubscribers: e.MaxSubscribers,
Subscriptions: []storage.Subscription{}, Subscriptions: []storage.Subscription{},
DeletedSubscription: []storage.Subscription{}, DeletedSubscription: []storage.Subscription{},
Data: map[string]any{}, Data: map[string]any{},
Deleted: e.Deleted, Deleted: e.Deleted,
} }
for _, v := range e.Subscriptions { for _, v := range e.Subscriptions {
@ -42,7 +42,7 @@ func (e Event) ToStorageType() storage.Event {
for k, d := range e.Data.GetFields() { for k, d := range e.Data.GetFields() {
jsondata, err := protojson.Marshal(d) jsondata, err := protojson.Marshal(d)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
break break
} }
var data any var data any
@ -73,7 +73,7 @@ func EventFromStorageType(event *storage.Event) (*Event, error) {
data, err := structpb.NewStruct(d) data, err := structpb.NewStruct(d)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, err return nil, err
} }
@ -91,23 +91,23 @@ func EventFromStorageType(event *storage.Event) (*Event, error) {
} }
return &Event{ return &Event{
Id: event.ID, Id: event.ID,
Namespace: event.Namespace, Namespace: event.Namespace,
Type: event.Type, Type: event.Type,
Owners: event.Owners, Owners: event.Owners,
RestrictedTo: event.RestrictedTo, RestrictedTo: event.RestrictedTo,
Name: event.Name, Name: event.Name,
Description: event.Description, Description: event.Description,
Startdate: timestamppb.New(event.Startdate), Startdate: timestamppb.New(event.Startdate),
Enddate: timestamppb.New(event.Enddate), Enddate: timestamppb.New(event.Enddate),
Starttime: event.Starttime, Starttime: event.Starttime,
Endtime: event.Endtime, Endtime: event.Endtime,
Allday: event.Allday, Allday: event.Allday,
MaxSubscribers: event.MaxSubscribers, MaxSubscribers: event.MaxSubscribers,
Subscriptions: subscriptions, Subscriptions: subscriptions,
DeletedSubscription: deletedsubscription, DeletedSubscription: deletedsubscription,
Data: data, Data: data,
Deleted: event.Deleted, Deleted: event.Deleted,
}, nil }, nil
} }
@ -121,7 +121,7 @@ func SubscriptionFromStorageType(s storage.Subscription) (*Subscription, error)
data, err := structpb.NewStruct(d) data, err := structpb.NewStruct(d)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, err return nil, err
} }
subscription := Subscription{ subscription := Subscription{

View File

@ -2,14 +2,13 @@ package grpcapi
import ( import (
context "context" context "context"
"fmt"
"log"
"net" "net"
"time" "time"
"git.coopgo.io/coopgo-platform/agenda/handlers" "git.coopgo.io/coopgo-platform/agenda/handlers"
"git.coopgo.io/coopgo-platform/agenda/storage" "git.coopgo.io/coopgo-platform/agenda/storage"
timestamp "github.com/golang/protobuf/ptypes/timestamp" timestamp "github.com/golang/protobuf/ptypes/timestamp"
"github.com/rs/zerolog/log"
"github.com/spf13/viper" "github.com/spf13/viper"
"google.golang.org/grpc" "google.golang.org/grpc"
codes "google.golang.org/grpc/codes" codes "google.golang.org/grpc/codes"
@ -32,12 +31,12 @@ func (s AgendaServerImpl) CreateEvent(ctx context.Context, req *CreateEventReque
e := req.Event.ToStorageType() e := req.Event.ToStorageType()
event, err := s.handler.CreateEvent(e) event, err := s.handler.CreateEvent(e)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, status.Errorf(codes.AlreadyExists, "event creation failed : %v", err) return nil, status.Errorf(codes.AlreadyExists, "event creation failed : %v", err)
} }
response, err := EventFromStorageType(event) response, err := EventFromStorageType(event)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, status.Errorf(codes.Internal, "issue while retrieving event : %v", err) return nil, status.Errorf(codes.Internal, "issue while retrieving event : %v", err)
} }
return &CreateEventResponse{Event: response}, nil return &CreateEventResponse{Event: response}, nil
@ -45,12 +44,12 @@ func (s AgendaServerImpl) CreateEvent(ctx context.Context, req *CreateEventReque
func (s AgendaServerImpl) GetEvent(ctx context.Context, req *GetEventRequest) (*GetEventResponse, error) { func (s AgendaServerImpl) GetEvent(ctx context.Context, req *GetEventRequest) (*GetEventResponse, error) {
event, err := s.handler.GetEvent(req.Id) event, err := s.handler.GetEvent(req.Id)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, status.Errorf(codes.AlreadyExists, "issue while retrieving event : %v", err) return nil, status.Errorf(codes.AlreadyExists, "issue while retrieving event : %v", err)
} }
response, err := EventFromStorageType(event) response, err := EventFromStorageType(event)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, status.Errorf(codes.Internal, "issue while retrieving event : %v", err) return nil, status.Errorf(codes.Internal, "issue while retrieving event : %v", err)
} }
return &GetEventResponse{Event: response}, nil return &GetEventResponse{Event: response}, nil
@ -70,7 +69,7 @@ func (s AgendaServerImpl) GetEvents(ctx context.Context, req *GetEventsRequest)
responses, err := s.handler.GetEvents(req.Namespaces, mindate, maxdate) responses, err := s.handler.GetEvents(req.Namespaces, mindate, maxdate)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, status.Errorf(codes.NotFound, "could not get events : %v", err) return nil, status.Errorf(codes.NotFound, "could not get events : %v", err)
} }
var events []*Event var events []*Event
@ -78,7 +77,7 @@ func (s AgendaServerImpl) GetEvents(ctx context.Context, req *GetEventsRequest)
for _, e := range responses { for _, e := range responses {
event, err := EventFromStorageType(&e) event, err := EventFromStorageType(&e)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, status.Errorf(codes.Internal, "could not get events : %v", err) return nil, status.Errorf(codes.Internal, "could not get events : %v", err)
} }
events = append(events, event) events = append(events, event)
@ -141,13 +140,13 @@ func ConvertMapToStruct(dataMap map[string]interface{}) (*structpb.Struct, error
func (s AgendaServerImpl) GetSubscriptionByUser(ctx context.Context, req *GetSubscriptionByUserRequest) (*GetSubscriptionByUserResponse, error) { func (s AgendaServerImpl) GetSubscriptionByUser(ctx context.Context, req *GetSubscriptionByUserRequest) (*GetSubscriptionByUserResponse, error) {
results, err := s.handler.GetSubscriptionByUser(req.Subscriber) results, err := s.handler.GetSubscriptionByUser(req.Subscriber)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, status.Errorf(codes.NotFound, "could not get subscriptions : %v", err) return nil, status.Errorf(codes.NotFound, "could not get subscriptions : %v", err)
} }
var subscriptions []*storage.Subscription var subscriptions []*storage.Subscription
for _, result := range results { for _, result := range results {
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, status.Errorf(codes.Internal, "could not get subscriptions : %v", err) return nil, status.Errorf(codes.Internal, "could not get subscriptions : %v", err)
} }
subscription := &storage.Subscription{ subscription := &storage.Subscription{
@ -162,13 +161,13 @@ func (s AgendaServerImpl) GetSubscriptionByUser(ctx context.Context, req *GetSub
} }
sub, err := ConvertStorageToProtoSubscription(subscriptions) sub, err := ConvertStorageToProtoSubscription(subscriptions)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, status.Errorf(codes.Internal, "could not get subscriptions : %v", err) return nil, status.Errorf(codes.Internal, "could not get subscriptions : %v", err)
} }
return &GetSubscriptionByUserResponse{Subscription: sub}, nil return &GetSubscriptionByUserResponse{Subscription: sub}, nil
} }
//////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////
func (s AgendaServerImpl) DeleteSubscription(ctx context.Context, req *DeleteSubscriptionRequest) (*DeleteSubscriptionResponse, error) { func (s AgendaServerImpl) DeleteSubscription(ctx context.Context, req *DeleteSubscriptionRequest) (*DeleteSubscriptionResponse, error) {
err := s.handler.DeleteSubscription(req.Eventid, req.Subscriber, req.Data.AsMap()) err := s.handler.DeleteSubscription(req.Eventid, req.Subscriber, req.Data.AsMap())
return &DeleteSubscriptionResponse{ return &DeleteSubscriptionResponse{
@ -178,23 +177,23 @@ func (s AgendaServerImpl) DeleteSubscription(ctx context.Context, req *DeleteSub
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////// // ///////////////////////////////////////////////////////////////////////////////////////
func (s AgendaServerImpl) UpdateEvent(ctx context.Context, req *UpdateEventRequest) (*UpdateEventResponse, error) { func (s AgendaServerImpl) UpdateEvent(ctx context.Context, req *UpdateEventRequest) (*UpdateEventResponse, error) {
b := req.Event.ToStorageType() b := req.Event.ToStorageType()
event, err := s.handler.UpdateEvent(b) event, err := s.handler.UpdateEvent(b)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, status.Errorf(codes.AlreadyExists, "event update failed : %v", err) return nil, status.Errorf(codes.AlreadyExists, "event update failed : %v", err)
} }
response, err := EventFromStorageType(event) response, err := EventFromStorageType(event)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, status.Errorf(codes.Internal, "issue while retrieving event : %v", err) return nil, status.Errorf(codes.Internal, "issue while retrieving event : %v", err)
} }
return &UpdateEventResponse{Event: response}, nil return &UpdateEventResponse{Event: response}, nil
} }
////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////
func (s AgendaServerImpl) mustEmbedUnimplementedAgendaServer() {} func (s AgendaServerImpl) mustEmbedUnimplementedAgendaServer() {}
func Run(done chan error, cfg *viper.Viper, handler handlers.AgendaHandler) { func Run(done chan error, cfg *viper.Viper, handler handlers.AgendaHandler) {
@ -202,13 +201,13 @@ func Run(done chan error, cfg *viper.Viper, handler handlers.AgendaHandler) {
dev_env = cfg.GetBool("dev_env") dev_env = cfg.GetBool("dev_env")
address = ":" + cfg.GetString("services.grpc.port") address = ":" + cfg.GetString("services.grpc.port")
) )
fmt.Println("-> GRPC server on", address) log.Info().Str("address", address).Msg("Running gRPC server")
server := grpc.NewServer() server := grpc.NewServer()
RegisterAgendaServer(server, NewAgendaServer(handler)) RegisterAgendaServer(server, NewAgendaServer(handler))
l, err := net.Listen("tcp", address) l, err := net.Listen("tcp", address)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal().Str("address", address).Err(err).Msg("Cannot listen to address")
} }
if dev_env { if dev_env {
@ -216,7 +215,7 @@ func Run(done chan error, cfg *viper.Viper, handler handlers.AgendaHandler) {
} }
if err := server.Serve(l); err != nil { if err := server.Serve(l); err != nil {
fmt.Println("gRPC service ended") log.Error().Err(err).Msg("gRPC service ended")
done <- err done <- err
} }
} }

19
main.go
View File

@ -1,7 +1,10 @@
package main package main
import ( import (
"fmt" "os"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"git.coopgo.io/coopgo-platform/agenda/grpcapi" "git.coopgo.io/coopgo-platform/agenda/grpcapi"
"git.coopgo.io/coopgo-platform/agenda/handlers" "git.coopgo.io/coopgo-platform/agenda/handlers"
@ -9,6 +12,7 @@ import (
) )
func main() { func main() {
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
cfg, err := ReadConfig() cfg, err := ReadConfig()
if err != nil { if err != nil {
@ -21,6 +25,10 @@ func main() {
dev_env = cfg.GetBool("dev_env") dev_env = cfg.GetBool("dev_env")
) )
if dev_env {
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
}
storage, err := storage.NewStorage(cfg) storage, err := storage.NewStorage(cfg)
if err != nil { if err != nil {
panic(err) panic(err)
@ -28,13 +36,10 @@ func main() {
handler := handlers.NewHandler(cfg, storage) handler := handlers.NewHandler(cfg, storage)
fmt.Println("Running", service_name, ":")
if dev_env {
fmt.Printf("\033]0;%s\007", service_name)
}
failed := make(chan error) failed := make(chan error)
log.Info().Str("service_name", service_name).Msg("Running service")
if grpc_enable { if grpc_enable {
go grpcapi.Run(failed, cfg, handler) go grpcapi.Run(failed, cfg, handler)
} }
@ -43,5 +48,5 @@ func main() {
err = <-failed err = <-failed
fmt.Println("Terminating :", err) log.Fatal().Err(err).Msg("Terminating server")
} }

View File

@ -2,8 +2,8 @@ package storage
import ( import (
"context" "context"
"fmt"
"github.com/rs/zerolog/log"
"github.com/spf13/viper" "github.com/spf13/viper"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/options"
@ -77,15 +77,13 @@ func (s MongoDBStorage) GetEvents(namespaces []string) (events []Event, err erro
if len(namespaces) == 0 { if len(namespaces) == 0 {
cur, err = collection.Find(context.TODO(), bson.D{}, findOptions) cur, err = collection.Find(context.TODO(), bson.D{}, findOptions)
if err != nil { if err != nil {
fmt.Println("...") log.Error().Err(err).Msg("")
fmt.Println(err)
return events, err return events, err
} }
} else { } else {
cur, err = collection.Find(context.TODO(), bson.M{"namespace": bson.M{"$in": namespaces}}, findOptions) cur, err = collection.Find(context.TODO(), bson.M{"namespace": bson.M{"$in": namespaces}}, findOptions)
if err != nil { if err != nil {
fmt.Println("Error here") log.Error().Err(err).Msg("")
fmt.Println(err)
return events, err return events, err
} }
} }
@ -98,12 +96,6 @@ func (s MongoDBStorage) GetEvents(namespaces []string) (events []Event, err erro
return events, err return events, err
} }
// fmt.Println(elem)
// bsonBytes, _ := bson.Marshal(elem)
// fmt.Println(string(bsonBytes))
// bson.Unmarshal(bsonBytes, &event)
events = append(events, event) events = append(events, event)
} }
@ -147,17 +139,41 @@ func (s MongoDBStorage) UpdateSubscription(eventid string, subscriber string, de
func (s MongoDBStorage) UpdateEvent(event Event) error { func (s MongoDBStorage) UpdateEvent(event Event) error {
collection := s.Client.Database(s.DbName).Collection(s.Collections["events"]) collection := s.Client.Database(s.DbName).Collection(s.Collections["events"])
if _, err := collection.ReplaceOne(context.TODO(), bson.M{"_id": event.ID}, event); err != nil { if _, err := collection.ReplaceOne(context.TODO(), bson.M{"_id": event.ID}, event); err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return err return err
} }
return nil return nil
} }
func (psql MongoDBStorage) GetSubscriber(subscriber string) ([]Subscription, error) { func (s MongoDBStorage) GetSubscriber(subscriber string) ([]Subscription, error) {
// collection := s.Client.Database(s.DbName).Collection(s.Collections["events"])
// subscriptions := []Subscription{}
// cur, err := collection.Find(context.TODO(), bson.M{"subscriptions": bson.M{"$elemMatch": bson.M{"subscriber": subscriber}}})
// if err != nil {
// return subscriptions, err
// }
// for cur.Next(context.Background()) {
// var event Event
// if err := cur.Decode(&event); err != nil {
// return subscriptions, err
// }
// for i := range event.Subscriptions {
// if event.Subscriptions[i].Subscriber == subscriber {
// subscriptions = append(subscriptions, event.Subscriptions[i])
// }
// }
// }
// return subscriptions, nil
return nil, nil return nil, nil
} }
func (psql MongoDBStorage) GetSubscriptionByUser(subscriber string) ([]Subscription, error) { func (s MongoDBStorage) GetSubscriptionByUser(subscriber string) ([]Subscription, error) {
// events, err := s.GetSubscriber(subscriber)
// if err != nil {
// panic(err)
// }
// fmt.Println(events)
// return events, nil
return nil, nil return nil, nil
} }

View File

@ -11,6 +11,7 @@ import (
"ariga.io/atlas/sql/postgres" "ariga.io/atlas/sql/postgres"
"ariga.io/atlas/sql/schema" "ariga.io/atlas/sql/schema"
"github.com/lib/pq" "github.com/lib/pq"
"github.com/rs/zerolog/log"
"github.com/spf13/viper" "github.com/spf13/viper"
) )
@ -38,12 +39,12 @@ func NewPostgresqlStorage(cfg *viper.Viper) (PostgresqlStorage, error) {
user, password, dbname, sslmode, timezone) user, password, dbname, sslmode, timezone)
db, err := sql.Open("postgres", psqlconn) db, err := sql.Open("postgres", psqlconn)
if err != nil { if err != nil {
fmt.Println("error", err) log.Error().Err(err).Msg("erroropening postgresql connection")
return PostgresqlStorage{}, fmt.Errorf("connection to postgresql failed") return PostgresqlStorage{}, fmt.Errorf("connection to postgresql failed")
} }
err = db.Ping() err = db.Ping()
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("error trying to reach postgresql server")
return PostgresqlStorage{}, fmt.Errorf("connection to postgresql database failed") return PostgresqlStorage{}, fmt.Errorf("connection to postgresql database failed")
} }
return PostgresqlStorage{ return PostgresqlStorage{
@ -413,7 +414,7 @@ func (psql PostgresqlStorage) UpdateSubscription(eventid string, subscriber stri
subscriber, subscriber,
) )
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return err return err
} }
eventQuery := fmt.Sprintf(` eventQuery := fmt.Sprintf(`
@ -423,7 +424,7 @@ func (psql PostgresqlStorage) UpdateSubscription(eventid string, subscriber stri
`, psql.Tables["event"]) `, psql.Tables["event"])
deletedSubscriptions, err := json.Marshal(deletesubscription) deletedSubscriptions, err := json.Marshal(deletesubscription)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return err return err
} }
_, err = tx.Exec( _, err = tx.Exec(
@ -432,7 +433,7 @@ func (psql PostgresqlStorage) UpdateSubscription(eventid string, subscriber stri
eventid, eventid,
) )
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return err return err
} }
@ -482,7 +483,7 @@ func (psql PostgresqlStorage) GetSubscriber(subscriber string) ([]Subscription,
subscriptionQuery := fmt.Sprintf("SELECT id, event_id, subscriber, tags, created_at, data FROM %s WHERE subscriber = $1", psql.Tables["subscription"]) subscriptionQuery := fmt.Sprintf("SELECT id, event_id, subscriber, tags, created_at, data FROM %s WHERE subscriber = $1", psql.Tables["subscription"])
rows, err := psql.DbConnection.Query(subscriptionQuery, subscriber) rows, err := psql.DbConnection.Query(subscriptionQuery, subscriber)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, err return nil, err
} }
defer rows.Close() defer rows.Close()
@ -499,14 +500,14 @@ func (psql PostgresqlStorage) GetSubscriber(subscriber string) ([]Subscription,
&dataSubscription, &dataSubscription,
) )
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, err return nil, err
} }
subscription.Tags = []string(tags) subscription.Tags = []string(tags)
data := make(map[string]any) data := make(map[string]any)
err = json.Unmarshal(dataSubscription, &data) err = json.Unmarshal(dataSubscription, &data)
if err != nil { if err != nil {
fmt.Println(err) log.Error().Err(err).Msg("")
return nil, err return nil, err
} }
subscription.Data = data subscription.Data = data