update with pagination
This commit is contained in:
parent
c4f7c33c03
commit
2dc837be38
@ -18,3 +18,4 @@ Modules:
|
|||||||
service_save_path: ./internal/service
|
service_save_path: ./internal/service
|
||||||
repository_save_path: ./internal/repository
|
repository_save_path: ./internal/repository
|
||||||
server_save_path: ./internal/server/http
|
server_save_path: ./internal/server/http
|
||||||
|
db: postgres
|
||||||
|
@ -12,6 +12,11 @@ map Discount {
|
|||||||
threshold => **integer**
|
threshold => **integer**
|
||||||
}
|
}
|
||||||
|
|
||||||
|
map Filter {
|
||||||
|
active => **boolean**
|
||||||
|
text => **string**
|
||||||
|
}
|
||||||
|
|
||||||
map Privilege {
|
map Privilege {
|
||||||
amount => **integer**
|
amount => **integer**
|
||||||
privilegeID => **string**
|
privilegeID => **string**
|
||||||
@ -19,17 +24,17 @@ map Privilege {
|
|||||||
|
|
||||||
map PromoCode {
|
map PromoCode {
|
||||||
id => **string** //primary_key//
|
id => **string** //primary_key//
|
||||||
|
createdAt => **string** //date-time//
|
||||||
|
dueTo => **integer**
|
||||||
|
offLimit => **boolean**
|
||||||
|
codeword => **string**
|
||||||
|
outdated => **boolean**
|
||||||
activationCount => **integer**
|
activationCount => **integer**
|
||||||
bonus => **bonus**
|
bonus => **bonus**
|
||||||
codeword => **string**
|
|
||||||
createdAt => **string** //date-time//
|
|
||||||
delete => **boolean**
|
delete => **boolean**
|
||||||
description => **string**
|
description => **string**
|
||||||
fastLinks => **[]string**
|
fastLinks => **[]string**
|
||||||
dueTo => **integer**
|
|
||||||
greetings => **string**
|
greetings => **string**
|
||||||
offLimit => **boolean**
|
|
||||||
outdated => **boolean**
|
|
||||||
}
|
}
|
||||||
|
|
||||||
map Bonus {
|
map Bonus {
|
||||||
@ -37,11 +42,6 @@ map Bonus {
|
|||||||
privilege => **privilege**
|
privilege => **privilege**
|
||||||
}
|
}
|
||||||
|
|
||||||
map Filter {
|
|
||||||
active => **boolean**
|
|
||||||
text => **string**
|
|
||||||
}
|
|
||||||
|
|
||||||
Bonus::discount -> Discount
|
Bonus::discount -> Discount
|
||||||
Bonus::privilege -> Privilege
|
Bonus::privilege -> Privilege
|
||||||
|
|
||||||
|
22
go.mod
22
go.mod
@ -1,6 +1,8 @@
|
|||||||
module codeword
|
module codeword
|
||||||
|
|
||||||
go 1.21
|
go 1.21.0
|
||||||
|
|
||||||
|
toolchain go1.23.1
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/caarlos0/env/v8 v8.0.0
|
github.com/caarlos0/env/v8 v8.0.0
|
||||||
@ -10,7 +12,7 @@ require (
|
|||||||
github.com/joho/godotenv v1.5.1
|
github.com/joho/godotenv v1.5.1
|
||||||
github.com/pioz/faker v1.7.3
|
github.com/pioz/faker v1.7.3
|
||||||
github.com/rs/xid v1.5.0
|
github.com/rs/xid v1.5.0
|
||||||
github.com/stretchr/testify v1.8.4
|
github.com/stretchr/testify v1.9.0
|
||||||
github.com/twmb/franz-go v1.15.4
|
github.com/twmb/franz-go v1.15.4
|
||||||
go.mongodb.org/mongo-driver v1.13.1
|
go.mongodb.org/mongo-driver v1.13.1
|
||||||
go.uber.org/zap v1.27.0
|
go.uber.org/zap v1.27.0
|
||||||
@ -25,18 +27,27 @@ require (
|
|||||||
github.com/cespare/xxhash/v2 v2.2.0 // indirect
|
github.com/cespare/xxhash/v2 v2.2.0 // indirect
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
||||||
|
github.com/getkin/kin-openapi v0.122.0 // indirect
|
||||||
|
github.com/go-openapi/jsonpointer v0.21.0 // indirect
|
||||||
|
github.com/go-openapi/swag v0.23.0 // indirect
|
||||||
github.com/golang/protobuf v1.5.3 // indirect
|
github.com/golang/protobuf v1.5.3 // indirect
|
||||||
github.com/golang/snappy v0.0.1 // indirect
|
github.com/golang/snappy v0.0.1 // indirect
|
||||||
github.com/google/uuid v1.4.0 // indirect
|
github.com/google/uuid v1.4.0 // indirect
|
||||||
|
github.com/invopop/yaml v0.3.1 // indirect
|
||||||
|
github.com/josharian/intern v1.0.0 // indirect
|
||||||
github.com/klauspost/compress v1.16.7 // indirect
|
github.com/klauspost/compress v1.16.7 // indirect
|
||||||
github.com/kr/pretty v0.1.0 // indirect
|
github.com/kr/pretty v0.3.1 // indirect
|
||||||
|
github.com/mailru/easyjson v0.7.7 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
github.com/mattn/go-runewidth v0.0.15 // indirect
|
github.com/mattn/go-runewidth v0.0.15 // indirect
|
||||||
|
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
|
||||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
|
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
|
||||||
|
github.com/perimeterx/marshmallow v1.1.5 // indirect
|
||||||
github.com/pierrec/lz4/v4 v4.1.19 // indirect
|
github.com/pierrec/lz4/v4 v4.1.19 // indirect
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||||
github.com/rivo/uniseg v0.2.0 // indirect
|
github.com/rivo/uniseg v0.2.0 // indirect
|
||||||
|
github.com/rs/zerolog v1.33.0 // indirect
|
||||||
github.com/twmb/franz-go/pkg/kmsg v1.7.0 // indirect
|
github.com/twmb/franz-go/pkg/kmsg v1.7.0 // indirect
|
||||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||||
github.com/valyala/fasthttp v1.50.0 // indirect
|
github.com/valyala/fasthttp v1.50.0 // indirect
|
||||||
@ -49,10 +60,11 @@ require (
|
|||||||
golang.org/x/crypto v0.17.0 // indirect
|
golang.org/x/crypto v0.17.0 // indirect
|
||||||
golang.org/x/net v0.17.0 // indirect
|
golang.org/x/net v0.17.0 // indirect
|
||||||
golang.org/x/sync v0.4.0 // indirect
|
golang.org/x/sync v0.4.0 // indirect
|
||||||
golang.org/x/sys v0.15.0 // indirect
|
golang.org/x/sys v0.17.0 // indirect
|
||||||
golang.org/x/text v0.14.0 // indirect
|
golang.org/x/text v0.14.0 // indirect
|
||||||
google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 // indirect
|
google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 // indirect
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
|
penahub.gitlab.yandexcloud.net/pena-services/blueprint v0.0.0-20241114114746-100696f35c90 // indirect
|
||||||
)
|
)
|
||||||
|
34
go.sum
34
go.sum
@ -4,6 +4,8 @@ github.com/caarlos0/env/v8 v8.0.0 h1:POhxHhSpuxrLMIdvTGARuZqR4Jjm8AYmoi/JKlcScs0
|
|||||||
github.com/caarlos0/env/v8 v8.0.0/go.mod h1:7K4wMY9bH0esiXSSHlfHLX5xKGQMnkH5Fk4TDSSSzfo=
|
github.com/caarlos0/env/v8 v8.0.0/go.mod h1:7K4wMY9bH0esiXSSHlfHLX5xKGQMnkH5Fk4TDSSSzfo=
|
||||||
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
|
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
|
||||||
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||||
|
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||||
|
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||||
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=
|
||||||
@ -11,8 +13,15 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/r
|
|||||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
|
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
|
||||||
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
|
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
|
||||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||||
|
github.com/getkin/kin-openapi v0.122.0 h1:WB9Jbl0Hp/T79/JF9xlSW5Kl9uYdk/AWD0yAd9HOM10=
|
||||||
|
github.com/getkin/kin-openapi v0.122.0/go.mod h1:PCWw/lfBrJY4HcdqE3jj+QFkaFK8ABoqo7PvqVhXXqw=
|
||||||
|
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
|
||||||
|
github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
|
||||||
|
github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
|
||||||
|
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
|
||||||
github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
|
github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
|
||||||
github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
|
github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
|
||||||
|
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||||
github.com/gofiber/fiber/v2 v2.51.0 h1:JNACcZy5e2tGApWB2QrRpenTWn0fq0hkFm6k0C86gKQ=
|
github.com/gofiber/fiber/v2 v2.51.0 h1:JNACcZy5e2tGApWB2QrRpenTWn0fq0hkFm6k0C86gKQ=
|
||||||
github.com/gofiber/fiber/v2 v2.51.0/go.mod h1:xaQRZQJGqnKOQnbQw+ltvku3/h8QxvNi8o6JiJ7Ll0U=
|
github.com/gofiber/fiber/v2 v2.51.0/go.mod h1:xaQRZQJGqnKOQnbQw+ltvku3/h8QxvNi8o6JiJ7Ll0U=
|
||||||
github.com/golang-jwt/jwt/v5 v5.2.0 h1:d/ix8ftRUorsN+5eMIlF4T6J8CAt9rch3My2winC1Jw=
|
github.com/golang-jwt/jwt/v5 v5.2.0 h1:d/ix8ftRUorsN+5eMIlF4T6J8CAt9rch3My2winC1Jw=
|
||||||
@ -28,24 +37,35 @@ github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
|||||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
|
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
|
||||||
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/invopop/yaml v0.3.1 h1:f0+ZpmhfBSS4MhG+4HYseMdJhoeeopbSKbq5Rpeelso=
|
||||||
|
github.com/invopop/yaml v0.3.1/go.mod h1:PMOp3nn4/12yEZUFfmOuNHJsZToEEOwoWsT+D81KkeA=
|
||||||
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
||||||
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
||||||
|
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
|
||||||
|
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
|
||||||
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
|
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
|
||||||
github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I=
|
github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I=
|
||||||
github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
||||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
|
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||||
|
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
|
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
|
||||||
|
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
||||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
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-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.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 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
|
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
|
||||||
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||||
|
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
|
||||||
|
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
|
||||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=
|
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=
|
||||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
|
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
|
||||||
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
|
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
|
||||||
@ -54,20 +74,28 @@ github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
|
|||||||
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
|
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
|
||||||
github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
|
github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
|
||||||
github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs=
|
github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs=
|
||||||
|
github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s=
|
||||||
|
github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw=
|
||||||
github.com/pierrec/lz4/v4 v4.1.19 h1:tYLzDnjDXh9qIxSTKHwXwOYmm9d887Y7Y1ZkyXYHAN4=
|
github.com/pierrec/lz4/v4 v4.1.19 h1:tYLzDnjDXh9qIxSTKHwXwOYmm9d887Y7Y1ZkyXYHAN4=
|
||||||
github.com/pierrec/lz4/v4 v4.1.19/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
|
github.com/pierrec/lz4/v4 v4.1.19/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
|
||||||
github.com/pioz/faker v1.7.3 h1:Tez8Emuq0UN+/d6mo3a9m/9ZZ/zdfJk0c5RtRatrceM=
|
github.com/pioz/faker v1.7.3 h1:Tez8Emuq0UN+/d6mo3a9m/9ZZ/zdfJk0c5RtRatrceM=
|
||||||
github.com/pioz/faker v1.7.3/go.mod h1:xSpay5w/oz1a6+ww0M3vfpe40pSIykeUPeWEc3TvVlc=
|
github.com/pioz/faker v1.7.3/go.mod h1:xSpay5w/oz1a6+ww0M3vfpe40pSIykeUPeWEc3TvVlc=
|
||||||
|
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
|
||||||
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
|
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
|
||||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
|
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
||||||
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
|
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
|
||||||
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
|
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
github.com/twmb/franz-go v1.15.4 h1:qBCkHaiutetnrXjAUWA99D9FEcZVMt2AYwkH3vWEQTw=
|
github.com/twmb/franz-go v1.15.4 h1:qBCkHaiutetnrXjAUWA99D9FEcZVMt2AYwkH3vWEQTw=
|
||||||
github.com/twmb/franz-go v1.15.4/go.mod h1:rC18hqNmfo8TMc1kz7CQmHL74PLNF8KVvhflxiiJZCU=
|
github.com/twmb/franz-go v1.15.4/go.mod h1:rC18hqNmfo8TMc1kz7CQmHL74PLNF8KVvhflxiiJZCU=
|
||||||
github.com/twmb/franz-go/pkg/kmsg v1.7.0 h1:a457IbvezYfA5UkiBvyV3zj0Is3y1i8EJgqjJYoij2E=
|
github.com/twmb/franz-go/pkg/kmsg v1.7.0 h1:a457IbvezYfA5UkiBvyV3zj0Is3y1i8EJgqjJYoij2E=
|
||||||
@ -121,8 +149,11 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.6.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.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
|
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
|
||||||
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
|
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
|
||||||
|
golang.org/x/sys v0.17.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/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
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=
|
||||||
@ -153,6 +184,7 @@ google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHh
|
|||||||
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=
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
|
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
|
||||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||||
@ -162,3 +194,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d h1:gbaDt35HMDqOK84WYmDIlXMI7rstUcRqNttaT6Kx1do=
|
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d h1:gbaDt35HMDqOK84WYmDIlXMI7rstUcRqNttaT6Kx1do=
|
||||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d/go.mod h1:lTmpjry+8evVkXWbEC+WMOELcFkRD1lFMc7J09mOndM=
|
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d/go.mod h1:lTmpjry+8evVkXWbEC+WMOELcFkRD1lFMc7J09mOndM=
|
||||||
|
penahub.gitlab.yandexcloud.net/pena-services/blueprint v0.0.0-20241114114746-100696f35c90 h1:sSDKSdjexf5e6BOOxcuODf9FrctQGtDPb/udma5nq18=
|
||||||
|
penahub.gitlab.yandexcloud.net/pena-services/blueprint v0.0.0-20241114114746-100696f35c90/go.mod h1:NJEEmcYZDD5IzHOMvGgCWwtE0T6nNnaCBEQKPRapHts=
|
||||||
|
@ -19,24 +19,70 @@ func NewPromocodeController(service *service.PromocodeService) *PromocodeControl
|
|||||||
|
|
||||||
func (c *PromocodeController) Register(router fiber.Router) {
|
func (c *PromocodeController) Register(router fiber.Router) {
|
||||||
|
|
||||||
|
router.Post("/promocode/activate", c.Activate)
|
||||||
|
|
||||||
|
router.Post("/promocode/getList", c.Getlist)
|
||||||
|
|
||||||
|
router.Delete("/promocode/{promocodeID}", c.Delete)
|
||||||
|
|
||||||
router.Post("/promocode/create", c.Createpromocode)
|
router.Post("/promocode/create", c.Createpromocode)
|
||||||
|
|
||||||
router.Put("/promocode/edit", c.Editpromocode)
|
router.Put("/promocode/edit", c.Editpromocode)
|
||||||
|
|
||||||
router.Post("/promocode/fastlink", c.Createfastlink)
|
router.Post("/promocode/fastlink", c.Createfastlink)
|
||||||
|
|
||||||
router.Delete("/promocode/{promocodeID}", c.Delete)
|
|
||||||
|
|
||||||
router.Post("/promocode/activate", c.Activate)
|
|
||||||
|
|
||||||
router.Post("/promocode/getList", c.Getlist)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PromocodeController) Name() string {
|
func (c *PromocodeController) Name() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *PromocodeController) Activate(ctx *fiber.Ctx) error {
|
||||||
|
// Обработчик для метода Activate
|
||||||
|
|
||||||
|
var request models.ActivateReq
|
||||||
|
if err := ctx.BodyParser(&request); err != nil {
|
||||||
|
return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
|
||||||
|
}
|
||||||
|
|
||||||
|
response, err := c.PromocodeService.Activate(ctx.Context(), &request)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
|
||||||
|
}
|
||||||
|
return ctx.Status(fiber.StatusOK).JSON(response)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *PromocodeController) Getlist(ctx *fiber.Ctx) error {
|
||||||
|
// Обработчик для метода Getlist
|
||||||
|
|
||||||
|
var request models.GetPromoCodesListReq
|
||||||
|
if err := ctx.BodyParser(&request); err != nil {
|
||||||
|
return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
|
||||||
|
}
|
||||||
|
|
||||||
|
response, err := c.PromocodeService.Getlist(ctx.Context(), &request)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
|
||||||
|
}
|
||||||
|
return ctx.Status(fiber.StatusOK).JSON(response)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *PromocodeController) Delete(ctx *fiber.Ctx) error {
|
||||||
|
// Обработчик для метода Delete
|
||||||
|
|
||||||
|
err := c.PromocodeService.Delete(ctx.Context())
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
|
||||||
|
}
|
||||||
|
return ctx.SendStatus(fiber.StatusOK)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func (c *PromocodeController) Createpromocode(ctx *fiber.Ctx) error {
|
func (c *PromocodeController) Createpromocode(ctx *fiber.Ctx) error {
|
||||||
// Обработчик для метода Createpromocode
|
// Обработчик для метода Createpromocode
|
||||||
|
|
||||||
@ -87,49 +133,3 @@ func (c *PromocodeController) Createfastlink(ctx *fiber.Ctx) error {
|
|||||||
return ctx.Status(fiber.StatusOK).JSON(response)
|
return ctx.Status(fiber.StatusOK).JSON(response)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PromocodeController) Delete(ctx *fiber.Ctx) error {
|
|
||||||
// Обработчик для метода Delete
|
|
||||||
|
|
||||||
err := c.PromocodeService.Delete(ctx.Context())
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
|
|
||||||
}
|
|
||||||
return ctx.SendStatus(fiber.StatusOK)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *PromocodeController) Activate(ctx *fiber.Ctx) error {
|
|
||||||
// Обработчик для метода Activate
|
|
||||||
|
|
||||||
var request models.ActivateReq
|
|
||||||
if err := ctx.BodyParser(&request); err != nil {
|
|
||||||
return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
|
|
||||||
}
|
|
||||||
|
|
||||||
response, err := c.PromocodeService.Activate(ctx.Context(), &request)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
|
|
||||||
}
|
|
||||||
return ctx.Status(fiber.StatusOK).JSON(response)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *PromocodeController) Getlist(ctx *fiber.Ctx) error {
|
|
||||||
// Обработчик для метода Getlist
|
|
||||||
|
|
||||||
var request models.GetPromoCodesListReq
|
|
||||||
if err := ctx.BodyParser(&request); err != nil {
|
|
||||||
return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
|
|
||||||
}
|
|
||||||
|
|
||||||
response, err := c.PromocodeService.Getlist(ctx.Context(), &request)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
|
|
||||||
}
|
|
||||||
return ctx.Status(fiber.StatusOK).JSON(response)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
@ -19,13 +19,13 @@ func NewRecoverController(service *service.RecoverService) *RecoverController {
|
|||||||
|
|
||||||
func (c *RecoverController) Register(router fiber.Router) {
|
func (c *RecoverController) Register(router fiber.Router) {
|
||||||
|
|
||||||
router.Get("/readiness", c.Readiness)
|
router.Get("/liveness", c.Liveness)
|
||||||
|
|
||||||
router.Post("/recover", c.Recovery)
|
router.Post("/recover", c.Recovery)
|
||||||
|
|
||||||
router.Get("/recover/{sign}", c.Recoverylink)
|
router.Get("/recover/{sign}", c.Recoverylink)
|
||||||
|
|
||||||
router.Get("/liveness", c.Liveness)
|
router.Get("/readiness", c.Readiness)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,10 +33,10 @@ func (c *RecoverController) Name() string {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RecoverController) Readiness(ctx *fiber.Ctx) error {
|
func (c *RecoverController) Liveness(ctx *fiber.Ctx) error {
|
||||||
// Обработчик для метода Readiness
|
// Обработчик для метода Liveness
|
||||||
|
|
||||||
err := c.RecoverService.Readiness(ctx.Context())
|
err := c.RecoverService.Liveness(ctx.Context())
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
|
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
|
||||||
@ -74,10 +74,10 @@ func (c *RecoverController) Recoverylink(ctx *fiber.Ctx) error {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RecoverController) Liveness(ctx *fiber.Ctx) error {
|
func (c *RecoverController) Readiness(ctx *fiber.Ctx) error {
|
||||||
// Обработчик для метода Liveness
|
// Обработчик для метода Readiness
|
||||||
|
|
||||||
err := c.RecoverService.Liveness(ctx.Context())
|
err := c.RecoverService.Readiness(ctx.Context())
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
|
return ctx.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
type Discount struct {
|
type Discount struct {
|
||||||
/* - Уровень скидки*/
|
|
||||||
Layer int `json:"layer"`
|
|
||||||
/* - Цель скидки*/
|
/* - Цель скидки*/
|
||||||
Target string `json:"target"`
|
Target string `json:"target"`
|
||||||
/* - Порог скидки*/
|
/* - Порог скидки*/
|
||||||
Threshold int `json:"threshold"`
|
Threshold int `json:"threshold"`
|
||||||
/* - Множитель скидки*/
|
/* - Множитель скидки*/
|
||||||
Factor int `json:"factor"`
|
Factor int `json:"factor"`
|
||||||
|
/* - Уровень скидки*/
|
||||||
|
Layer int `json:"layer"`
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
type EditPromoCodeReq struct {
|
type EditPromoCodeReq struct {
|
||||||
|
/* - Приветственное сообщение после активации промокода*/
|
||||||
|
Greetings string `json:"Greetings"`
|
||||||
|
/* - Идентификатор промокода, который требуется обновить*/
|
||||||
|
ID string `json:"ID"`
|
||||||
/* - Количество активаций промокода*/
|
/* - Количество активаций промокода*/
|
||||||
Activationcount int `json:"ActivationCount"`
|
Activationcount int `json:"ActivationCount"`
|
||||||
/* - Флаг удаления промокода*/
|
/* - Флаг удаления промокода*/
|
||||||
@ -9,8 +13,4 @@ type EditPromoCodeReq struct {
|
|||||||
Description string `json:"Description"`
|
Description string `json:"Description"`
|
||||||
/* - Дата окончания промокода в формате Unix time*/
|
/* - Дата окончания промокода в формате Unix time*/
|
||||||
Dueto int `json:"DueTo"`
|
Dueto int `json:"DueTo"`
|
||||||
/* - Приветственное сообщение после активации промокода*/
|
|
||||||
Greetings string `json:"Greetings"`
|
|
||||||
/* - Идентификатор промокода, который требуется обновить*/
|
|
||||||
ID string `json:"ID"`
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
type GetPromoCodesListReq struct {
|
type GetPromoCodesListReq struct {
|
||||||
|
/* - Номер страницы*/
|
||||||
|
Page int `json:"page"`
|
||||||
/* - */
|
/* - */
|
||||||
Filter Filter `json:"filter"`
|
Filter Filter `json:"filter"`
|
||||||
/* - Максимальное количество элементов на странице*/
|
/* - Максимальное количество элементов на странице*/
|
||||||
Limit int `json:"limit"`
|
Limit int `json:"limit"`
|
||||||
/* - Номер страницы*/
|
|
||||||
Page int `json:"page"`
|
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
type Privilege struct {
|
type Privilege struct {
|
||||||
/* - Количество привилегии*/
|
|
||||||
Amount int `json:"amount"`
|
|
||||||
/* - Идентификатор привилегии*/
|
/* - Идентификатор привилегии*/
|
||||||
Privilegeid string `json:"privilegeID"`
|
Privilegeid string `json:"privilegeID"`
|
||||||
|
/* - Количество привилегии*/
|
||||||
|
Amount int `json:"amount"`
|
||||||
}
|
}
|
||||||
|
@ -3,26 +3,26 @@ package models
|
|||||||
type PromoCode struct {
|
type PromoCode struct {
|
||||||
/* - Идентификатор промокода*/
|
/* - Идентификатор промокода*/
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
/* - Количество активаций промокода*/
|
|
||||||
Activationcount int `json:"activationCount"`
|
|
||||||
/* - Бонус, предоставляемый с промокодом*/
|
/* - Бонус, предоставляемый с промокодом*/
|
||||||
Bonus Bonus `json:"bonus"`
|
Bonus Bonus `json:"bonus"`
|
||||||
/* - Кодовое слово для активации промокода*/
|
|
||||||
Codeword string `json:"codeword"`
|
|
||||||
/* - Дата и время создания промокода*/
|
|
||||||
Createdat string `json:"createdAt"`
|
|
||||||
/* - Флаг*/
|
/* - Флаг*/
|
||||||
Delete bool `json:"delete"`
|
Delete bool `json:"delete"`
|
||||||
/* - Описание промокода*/
|
/* - Описание промокода*/
|
||||||
Description string `json:"description"`
|
Description string `json:"description"`
|
||||||
/* - Список быстрых ссылок для активации промокода*/
|
/* - Список быстрых ссылок для активации промокода*/
|
||||||
Fastlinks []string `json:"fastLinks"`
|
Fastlinks []string `json:"fastLinks"`
|
||||||
/* - Дата истечения действия промокода в формате Unix time*/
|
|
||||||
Dueto int `json:"dueTo"`
|
|
||||||
/* - Приветственное сообщение после активации промокода*/
|
/* - Приветственное сообщение после активации промокода*/
|
||||||
Greetings string `json:"greetings"`
|
Greetings string `json:"greetings"`
|
||||||
/* - Флаг*/
|
/* - Количество активаций промокода*/
|
||||||
Offlimit bool `json:"offLimit"`
|
Activationcount int `json:"activationCount"`
|
||||||
/* - Флаг*/
|
/* - Флаг*/
|
||||||
Outdated bool `json:"outdated"`
|
Outdated bool `json:"outdated"`
|
||||||
|
/* - Кодовое слово для активации промокода*/
|
||||||
|
Codeword string `json:"codeword"`
|
||||||
|
/* - Дата и время создания промокода*/
|
||||||
|
Createdat string `json:"createdAt"`
|
||||||
|
/* - Дата истечения действия промокода в формате Unix time*/
|
||||||
|
Dueto int `json:"dueTo"`
|
||||||
|
/* - Флаг*/
|
||||||
|
Offlimit bool `json:"offLimit"`
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
type PromoCodeReq struct {
|
type PromoCodeReq struct {
|
||||||
/* - Количество активаций промокода*/
|
|
||||||
Activationcount int `json:"activationCount"`
|
|
||||||
/* - Бонус*/
|
/* - Бонус*/
|
||||||
Bonus Bonus `json:"bonus"`
|
Bonus Bonus `json:"bonus"`
|
||||||
/* - Кодовое слово для активации промокода*/
|
/* - Кодовое слово для активации промокода*/
|
||||||
@ -15,4 +13,6 @@ type PromoCodeReq struct {
|
|||||||
Fastlinks []string `json:"fastLinks"`
|
Fastlinks []string `json:"fastLinks"`
|
||||||
/* - Приветственное сообщение после активации промокода*/
|
/* - Приветственное сообщение после активации промокода*/
|
||||||
Greetings string `json:"greetings"`
|
Greetings string `json:"greetings"`
|
||||||
|
/* - Количество активаций промокода*/
|
||||||
|
Activationcount int `json:"activationCount"`
|
||||||
}
|
}
|
||||||
|
@ -3,13 +3,53 @@ package repository
|
|||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
"codeword/internal/models"
|
||||||
"context"
|
"context"
|
||||||
|
"database/sql"
|
||||||
)
|
)
|
||||||
|
|
||||||
type PromocodeRepository struct {
|
type PromocodeRepository struct {
|
||||||
|
queries *sqlcgen.Queries
|
||||||
|
pool *sql.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPromocodeRepository() *PromocodeRepository {
|
type PromocodeDeps struct {
|
||||||
return &PromocodeRepository{}
|
Queries *sqlcgen.Queries
|
||||||
|
Pool *sql.DB
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewPromocodeRepository(deps PromocodeDeps) *PromocodeRepository {
|
||||||
|
return &PromocodeRepository{
|
||||||
|
queries: deps.Queries,
|
||||||
|
pool: deps.Pool,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PromocodeRepository) Activate(ctx context.Context, request *models.ActivateReq) (*models.ActivateResp, error) {
|
||||||
|
//TODO:IMPLEMENT ME
|
||||||
|
|
||||||
|
return &models.ActivateResp{}, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PromocodeRepository) Getlist(ctx context.Context, request *models.GetPromoCodesListReq) (*models.GetPromoCodesListResp, error) {
|
||||||
|
|
||||||
|
rows, err := r.queries.Getlist(ctx, sqlcgen.GetlistParams{
|
||||||
|
Page: request.Page,
|
||||||
|
Limit: request.Size,
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &models.GetPromoCodesListResp{}, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PromocodeRepository) Delete(ctx context.Context) error {
|
||||||
|
//TODO:IMPLEMENT ME
|
||||||
|
|
||||||
|
return nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *PromocodeRepository) Createpromocode(ctx context.Context, request *models.PromoCodeReq) (*models.PromoCode, error) {
|
func (r *PromocodeRepository) Createpromocode(ctx context.Context, request *models.PromoCodeReq) (*models.PromoCode, error) {
|
||||||
@ -32,24 +72,3 @@ func (r *PromocodeRepository) Createfastlink(ctx context.Context, request *model
|
|||||||
return &models.CreateFastLinkResp{}, nil
|
return &models.CreateFastLinkResp{}, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *PromocodeRepository) Delete(ctx context.Context) error {
|
|
||||||
//TODO:IMPLEMENT ME
|
|
||||||
|
|
||||||
return nil
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *PromocodeRepository) Activate(ctx context.Context, request *models.ActivateReq) (*models.ActivateResp, error) {
|
|
||||||
//TODO:IMPLEMENT ME
|
|
||||||
|
|
||||||
return &models.ActivateResp{}, nil
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *PromocodeRepository) Getlist(ctx context.Context, request *models.GetPromoCodesListReq) (*models.GetPromoCodesListResp, error) {
|
|
||||||
//TODO:IMPLEMENT ME
|
|
||||||
|
|
||||||
return &models.GetPromoCodesListResp{}, nil
|
|
||||||
|
|
||||||
}
|
|
||||||
|
@ -3,16 +3,27 @@ package repository
|
|||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
"codeword/internal/models"
|
||||||
"context"
|
"context"
|
||||||
|
"database/sql"
|
||||||
)
|
)
|
||||||
|
|
||||||
type RecoverRepository struct {
|
type RecoverRepository struct {
|
||||||
|
queries *sqlcgen.Queries
|
||||||
|
pool *sql.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRecoverRepository() *RecoverRepository {
|
type RecoverDeps struct {
|
||||||
return &RecoverRepository{}
|
Queries *sqlcgen.Queries
|
||||||
|
Pool *sql.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RecoverRepository) Readiness(ctx context.Context) error {
|
func NewRecoverRepository(deps RecoverDeps) *RecoverRepository {
|
||||||
|
return &RecoverRepository{
|
||||||
|
queries: deps.Queries,
|
||||||
|
pool: deps.Pool,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RecoverRepository) Liveness(ctx context.Context) error {
|
||||||
//TODO:IMPLEMENT ME
|
//TODO:IMPLEMENT ME
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -33,7 +44,7 @@ func (r *RecoverRepository) Recoverylink(ctx context.Context) error {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RecoverRepository) Liveness(ctx context.Context) error {
|
func (r *RecoverRepository) Readiness(ctx context.Context) error {
|
||||||
//TODO:IMPLEMENT ME
|
//TODO:IMPLEMENT ME
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -3,13 +3,24 @@ package repository
|
|||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
"codeword/internal/models"
|
||||||
"context"
|
"context"
|
||||||
|
"database/sql"
|
||||||
)
|
)
|
||||||
|
|
||||||
type StatsRepository struct {
|
type StatsRepository struct {
|
||||||
|
queries *sqlcgen.Queries
|
||||||
|
pool *sql.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewStatsRepository() *StatsRepository {
|
type StatsDeps struct {
|
||||||
return &StatsRepository{}
|
Queries *sqlcgen.Queries
|
||||||
|
Pool *sql.DB
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewStatsRepository(deps StatsDeps) *StatsRepository {
|
||||||
|
return &StatsRepository{
|
||||||
|
queries: deps.Queries,
|
||||||
|
pool: deps.Pool,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *StatsRepository) Getstats(ctx context.Context, request *models.PromoCodeStatsReq) (*models.PromoCodeStatsResp, error) {
|
func (r *StatsRepository) Getstats(ctx context.Context, request *models.PromoCodeStatsReq) (*models.PromoCodeStatsResp, error) {
|
||||||
|
@ -16,6 +16,36 @@ func NewPromocodeService(repository *repository.PromocodeRepository) *PromocodeS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *PromocodeService) Activate(ctx context.Context, request *models.ActivateReq) (*models.ActivateResp, error) {
|
||||||
|
|
||||||
|
response, err := s.PromocodeRepository.Activate(ctx, request)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return response, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *PromocodeService) Getlist(ctx context.Context, request *models.GetPromoCodesListReq) (*models.GetPromoCodesListResp, error) {
|
||||||
|
|
||||||
|
response, err := s.PromocodeRepository.Getlist(ctx, request)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return response, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *PromocodeService) Delete(ctx context.Context) error {
|
||||||
|
|
||||||
|
err := s.PromocodeRepository.Delete(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func (s *PromocodeService) Createpromocode(ctx context.Context, request *models.PromoCodeReq) (*models.PromoCode, error) {
|
func (s *PromocodeService) Createpromocode(ctx context.Context, request *models.PromoCodeReq) (*models.PromoCode, error) {
|
||||||
|
|
||||||
response, err := s.PromocodeRepository.Createpromocode(ctx, request)
|
response, err := s.PromocodeRepository.Createpromocode(ctx, request)
|
||||||
@ -45,33 +75,3 @@ func (s *PromocodeService) Createfastlink(ctx context.Context, request *models.C
|
|||||||
return response, nil
|
return response, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *PromocodeService) Delete(ctx context.Context) error {
|
|
||||||
|
|
||||||
err := s.PromocodeRepository.Delete(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *PromocodeService) Activate(ctx context.Context, request *models.ActivateReq) (*models.ActivateResp, error) {
|
|
||||||
|
|
||||||
response, err := s.PromocodeRepository.Activate(ctx, request)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return response, nil
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *PromocodeService) Getlist(ctx context.Context, request *models.GetPromoCodesListReq) (*models.GetPromoCodesListResp, error) {
|
|
||||||
|
|
||||||
response, err := s.PromocodeRepository.Getlist(ctx, request)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return response, nil
|
|
||||||
|
|
||||||
}
|
|
||||||
|
@ -16,9 +16,9 @@ func NewRecoverService(repository *repository.RecoverRepository) *RecoverService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *RecoverService) Readiness(ctx context.Context) error {
|
func (s *RecoverService) Liveness(ctx context.Context) error {
|
||||||
|
|
||||||
err := s.RecoverRepository.Readiness(ctx)
|
err := s.RecoverRepository.Liveness(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -46,9 +46,9 @@ func (s *RecoverService) Recoverylink(ctx context.Context) error {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *RecoverService) Liveness(ctx context.Context) error {
|
func (s *RecoverService) Readiness(ctx context.Context) error {
|
||||||
|
|
||||||
err := s.RecoverRepository.Liveness(ctx)
|
err := s.RecoverRepository.Readiness(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
5
internal/sqlc/db_query/queries.sql
Normal file
5
internal/sqlc/db_query/queries.sql
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
-- name: Getlist :many
|
||||||
|
SELECT *
|
||||||
|
FROM {{ .TableName }} AS a
|
||||||
|
ORDER BY a.created_at DESC
|
||||||
|
LIMIT $2 OFFSET ($1-1)*$2;
|
15
sqlc.yaml
Normal file
15
sqlc.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
version: "1"
|
||||||
|
packages:
|
||||||
|
- name: "sqlcgen"
|
||||||
|
path: ".internal/sqlc/sqlcgen"
|
||||||
|
queries: ".internal/sqlc/db_query/queries.sql"
|
||||||
|
schema:
|
||||||
|
- "todo"
|
||||||
|
engine: "postgresql"
|
||||||
|
emit_json_tags: true
|
||||||
|
emit_db_tags: true
|
||||||
|
emit_prepared_queries: false
|
||||||
|
emit_interface: false
|
||||||
|
emit_exact_table_names: false
|
||||||
|
emit_empty_slices: false
|
||||||
|
sql_package: "database/sql"
|
Loading…
Reference in New Issue
Block a user