Skip to content

Commit 8e7661f

Browse files
committed
update routes to be compatible with rest api
1 parent 456e695 commit 8e7661f

File tree

18 files changed

+312
-293
lines changed

18 files changed

+312
-293
lines changed

Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ RUN update-ca-certificates
1818
WORKDIR /app
1919

2020
COPY --from=build /app/nightel-core nightel-core
21-
COPY --from=build /app/configs/config.default.yaml configs/config.yaml
21+
COPY --from=build /app/configs/config.default.yaml configs/config.default.yaml
2222
COPY --from=build /app/storage/log/.gitignore storage/log/.gitignore
2323
COPY --from=build /app/web/index.html web/index.html
2424

cmd/root.go

-6
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import (
66
"runtime"
77
)
88

9-
var configPath string
10-
119
var rootCmd = &cobra.Command{
1210
Use: "nightel-core",
1311
Short: "The Nightel core!",
@@ -21,10 +19,6 @@ func init() {
2119
fmt.Println(runtime.Compiler, runtime.Version(), runtime.GOOS, runtime.GOARCH)
2220
})
2321

24-
rootCmd.PersistentFlags().StringVarP(
25-
&configPath, "config", "c", "configs/config.yaml", "Path to configuration file",
26-
)
27-
2822
rootCmd.AddCommand(startCmd)
2923
rootCmd.AddCommand(versionCmd)
3024
}

cmd/start.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ var startCmd = &cobra.Command{
1212
}
1313

1414
func startFunc(_ *cobra.Command, _ []string) {
15-
a, err := app.New(configPath)
15+
a, err := app.New()
1616
if err != nil {
1717
panic(err)
1818
}

docker-compose.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ services:
44
app:
55
image: ghcr.io/neatplex/nightel-core:latest
66
ports:
7-
- "${APP_EXPOSED_PORT:-0}:8080"
7+
- ${APP_EXPOSED_PORT:-0}:8080
88
volumes:
99
- ./configs:/app/configs
1010
- ./storage:/app/storage
@@ -15,7 +15,7 @@ services:
1515
mysql:
1616
image: ghcr.io/getimages/mysql:8.0.35-debian
1717
ports:
18-
- "127.0.0.1:${MYSQL_EXPOSED_PORT:-0}:3306"
18+
- 127.0.0.1:${MYSQL_EXPOSED_PORT:-0}:3306
1919
environment:
2020
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
2121
MYSQL_DATABASE: ${MYSQL_DATABASE}

go.mod

+11-11
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,17 @@ require (
66
github.com/aws/aws-sdk-go-v2 v1.24.1
77
github.com/aws/aws-sdk-go-v2/config v1.26.6
88
github.com/aws/aws-sdk-go-v2/credentials v1.16.16
9-
github.com/aws/aws-sdk-go-v2/service/s3 v1.48.0
10-
github.com/go-playground/validator/v10 v10.17.0
11-
github.com/google/uuid v1.5.0
9+
github.com/aws/aws-sdk-go-v2/service/s3 v1.48.1
10+
github.com/go-playground/validator/v10 v10.18.0
11+
github.com/google/uuid v1.6.0
1212
github.com/labstack/echo/v4 v4.11.4
13+
github.com/rotisserie/eris v0.5.4
1314
github.com/spf13/cobra v1.8.0
1415
github.com/spf13/viper v1.18.2
1516
go.uber.org/zap v1.26.0
16-
golang.org/x/crypto v0.18.0
17-
gorm.io/driver/mysql v1.5.2
18-
gorm.io/gorm v1.25.5
17+
golang.org/x/crypto v0.19.0
18+
gorm.io/driver/mysql v1.5.4
19+
gorm.io/gorm v1.25.7
1920
)
2021

2122
require (
@@ -47,14 +48,13 @@ require (
4748
github.com/jinzhu/now v1.1.5 // indirect
4849
github.com/jmespath/go-jmespath v0.4.0 // indirect
4950
github.com/labstack/gommon v0.4.2 // indirect
50-
github.com/leodido/go-urn v1.2.4 // indirect
51+
github.com/leodido/go-urn v1.4.0 // indirect
5152
github.com/magiconair/properties v1.8.7 // indirect
5253
github.com/mattn/go-colorable v0.1.13 // indirect
5354
github.com/mattn/go-isatty v0.0.20 // indirect
5455
github.com/mitchellh/mapstructure v1.5.0 // indirect
5556
github.com/pelletier/go-toml/v2 v2.1.1 // indirect
5657
github.com/rogpeppe/go-internal v1.10.0 // indirect
57-
github.com/rotisserie/eris v0.5.4 // indirect
5858
github.com/sagikazarmark/locafero v0.4.0 // indirect
5959
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
6060
github.com/sourcegraph/conc v0.3.0 // indirect
@@ -65,9 +65,9 @@ require (
6565
github.com/valyala/bytebufferpool v1.0.0 // indirect
6666
github.com/valyala/fasttemplate v1.2.2 // indirect
6767
go.uber.org/multierr v1.11.0 // indirect
68-
golang.org/x/exp v0.0.0-20240119083558-1b970713d09a // indirect
69-
golang.org/x/net v0.20.0 // indirect
70-
golang.org/x/sys v0.16.0 // indirect
68+
golang.org/x/exp v0.0.0-20240205201215-2c58cdc269a3 // indirect
69+
golang.org/x/net v0.21.0 // indirect
70+
golang.org/x/sys v0.17.0 // indirect
7171
golang.org/x/text v0.14.0 // indirect
7272
golang.org/x/time v0.5.0 // indirect
7373
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect

go.sum

+21
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ github.com/aws/aws-sdk-go-v2/service/s3 v1.47.1 h1:0/W5F+LlXzKZ7KTsRcD8pugasVnsr
9696
github.com/aws/aws-sdk-go-v2/service/s3 v1.47.1/go.mod h1:TqThLn4bRCn/UYf960hNZgPPjmxc17fQcwmjfuG6D5k=
9797
github.com/aws/aws-sdk-go-v2/service/s3 v1.48.0 h1:PJTdBMsyvra6FtED7JZtDpQrIAflYDHFoZAu/sKYkwU=
9898
github.com/aws/aws-sdk-go-v2/service/s3 v1.48.0/go.mod h1:4qXHrG1Ne3VGIMZPCB8OjH/pLFO94sKABIusjh0KWPU=
99+
github.com/aws/aws-sdk-go-v2/service/s3 v1.48.1 h1:5XNlsBsEvBZBMO6p82y+sqpWg8j5aBCe+5C2GBFgqBQ=
100+
github.com/aws/aws-sdk-go-v2/service/s3 v1.48.1/go.mod h1:4qXHrG1Ne3VGIMZPCB8OjH/pLFO94sKABIusjh0KWPU=
99101
github.com/aws/aws-sdk-go-v2/service/sso v1.18.1 h1:V40g2daNO3l1J94JYwqfkyvQMYXi5I25fs3fNQW8iDs=
100102
github.com/aws/aws-sdk-go-v2/service/sso v1.18.1/go.mod h1:0ZWQJP/mBOUxkCvZKybZNz1XmdUKSBxoF0dzgfxtvDs=
101103
github.com/aws/aws-sdk-go-v2/service/sso v1.18.7 h1:eajuO3nykDPdYicLlP3AGgOyVN3MOlFmZv7WGTuJPow=
@@ -155,6 +157,8 @@ github.com/go-playground/validator/v10 v10.16.0 h1:x+plE831WK4vaKHO/jpgUGsvLKIqR
155157
github.com/go-playground/validator/v10 v10.16.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
156158
github.com/go-playground/validator/v10 v10.17.0 h1:SmVVlfAOtlZncTxRuinDPomC2DkXJ4E5T9gDA0AIH74=
157159
github.com/go-playground/validator/v10 v10.17.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
160+
github.com/go-playground/validator/v10 v10.18.0 h1:BvolUXjp4zuvkZ5YN5t7ebzbhlUtPsPm2S9NAZ5nl9U=
161+
github.com/go-playground/validator/v10 v10.18.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
158162
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
159163
github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
160164
github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
@@ -217,6 +221,8 @@ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
217221
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
218222
github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
219223
github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
224+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
225+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
220226
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
221227
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
222228
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
@@ -257,6 +263,8 @@ github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0
257263
github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU=
258264
github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
259265
github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
266+
github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
267+
github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
260268
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
261269
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
262270
github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
@@ -357,6 +365,8 @@ golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA=
357365
golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g=
358366
golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
359367
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
368+
golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
369+
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
360370
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
361371
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
362372
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -371,6 +381,8 @@ golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjs
371381
golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k=
372382
golang.org/x/exp v0.0.0-20240119083558-1b970713d09a h1:Q8/wZp0KX97QFTc2ywcOE0YRjZPVIx+MXInMzdvQqcA=
373383
golang.org/x/exp v0.0.0-20240119083558-1b970713d09a/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08=
384+
golang.org/x/exp v0.0.0-20240205201215-2c58cdc269a3 h1:/RIbNt/Zr7rVhIkQhooTxCxFcdWLGIKnZA4IXNFSrvo=
385+
golang.org/x/exp v0.0.0-20240205201215-2c58cdc269a3/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08=
374386
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
375387
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
376388
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -430,6 +442,8 @@ golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg=
430442
golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ=
431443
golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo=
432444
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
445+
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
446+
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
433447
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
434448
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
435449
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -494,6 +508,8 @@ golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
494508
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
495509
golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
496510
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
511+
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
512+
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
497513
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
498514
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
499515
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -666,9 +682,14 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
666682
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
667683
gorm.io/driver/mysql v1.5.2 h1:QC2HRskSE75wBuOxe0+iCkyJZ+RqpudsQtqkp+IMuXs=
668684
gorm.io/driver/mysql v1.5.2/go.mod h1:pQLhh1Ut/WUAySdTHwBpBv6+JKcj+ua4ZFx1QQTBzb8=
685+
gorm.io/driver/mysql v1.5.4 h1:igQmHfKcbaTVyAIHNhhB888vvxh8EdQ2uSUT0LPcBso=
686+
gorm.io/driver/mysql v1.5.4/go.mod h1:9rYxJph/u9SWkWc9yY4XJ1F/+xO0S/ChOmbk3+Z5Tvs=
669687
gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
670688
gorm.io/gorm v1.25.5 h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls=
671689
gorm.io/gorm v1.25.5/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
690+
gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
691+
gorm.io/gorm v1.25.7 h1:VsD6acwRjz2zFxGO50gPO6AkNs7KKnvfzUjHQhZDz/A=
692+
gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
672693
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
673694
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
674695
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

internal/app/app.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ type App struct {
2626
}
2727

2828
// New creates an app from the given configuration file.
29-
func New(configPath string) (a *App, err error) {
29+
func New() (a *App, err error) {
3030
a = &App{}
3131

32-
a.config, err = config.New(configPath)
32+
a.config, err = config.New()
3333
if err != nil {
3434
return nil, err
3535
}

internal/config/config.go

+13-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package config
33
import (
44
"fmt"
55
"github.com/go-playground/validator/v10"
6+
"github.com/neatplex/nightel-core/internal/utils"
67
"github.com/spf13/viper"
78
"strings"
89
)
@@ -78,7 +79,7 @@ type S3 struct {
7879
}
7980

8081
// New creates a new configuration instance.
81-
func New(path string) (*Config, error) {
82+
func New() (*Config, error) {
8283
c := new(Config)
8384

8485
v := viper.New()
@@ -87,15 +88,25 @@ func New(path string) (*Config, error) {
8788
v.SetEnvPrefix(strings.ToLower(AppName))
8889
v.SetEnvKeyReplacer(strings.NewReplacer(".", "_", "-", "_"))
8990
v.AutomaticEnv()
90-
v.SetConfigFile(path)
9191

92+
v.SetConfigFile("./configs/config.default.yaml")
9293
if err := v.ReadInConfig(); err != nil {
9394
return nil, err
9495
}
9596
if err := v.Unmarshal(c); err != nil {
9697
return nil, err
9798
}
9899

100+
if utils.FileExist("./configs/config.yaml") {
101+
v.SetConfigFile("./configs/config.yaml")
102+
if err := v.MergeInConfig(); err != nil {
103+
return nil, err
104+
}
105+
if err := v.Unmarshal(c); err != nil {
106+
return nil, err
107+
}
108+
}
109+
99110
fmt.Println("configuration", *c)
100111

101112
return c, validator.New().Struct(c)

internal/http/server/handlers/v1/feed.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ func Feed(ctr *container.Container) echo.HandlerFunc {
1616
lastId := ^uint64(0)
1717
requestLastId := ctx.QueryParams().Get("lastId")
1818
if requestLastId != "" {
19-
story, err := ctr.StoryService.FindById(utils.StringToID(requestLastId))
19+
story, err := ctr.StoryService.FindById(utils.StringToID(requestLastId, 0))
2020
if err != nil {
2121
return err
2222
}

internal/http/server/handlers/v1/likes.go

+17-33
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,31 @@ import (
44
"github.com/labstack/echo/v4"
55
"github.com/neatplex/nightel-core/internal/models"
66
"github.com/neatplex/nightel-core/internal/services/container"
7+
"github.com/neatplex/nightel-core/internal/utils"
78
"net/http"
89
)
910

10-
type LikesStoreRequest struct {
11-
StoryID uint64 `json:"story_id" validate:"required"`
11+
func LikesIndex(ctr *container.Container) echo.HandlerFunc {
12+
return func(ctx echo.Context) error {
13+
stories, err := ctr.LikeService.IndexByStoryIDWithUser(
14+
utils.StringToID(ctx.Param("storyId"), 0),
15+
utils.StringToID(ctx.QueryParams().Get("lastId"), ^uint64(0)),
16+
utils.StringToInt(ctx.QueryParams().Get("count"), 10),
17+
)
18+
if err != nil {
19+
return err
20+
}
21+
return ctx.JSON(http.StatusCreated, map[string]interface{}{
22+
"likes": stories,
23+
})
24+
}
1225
}
1326

1427
func LikesStore(ctr *container.Container) echo.HandlerFunc {
1528
return func(ctx echo.Context) error {
1629
user := ctx.Get("user").(*models.User)
1730

18-
var r LikesStoreRequest
19-
if err := ctx.Bind(&r); err != nil {
20-
return ctx.JSON(http.StatusBadRequest, map[string]string{
21-
"message": "Cannot parse the request body.",
22-
})
23-
}
24-
if err := ctx.Validate(r); err != nil {
25-
return ctx.JSON(http.StatusUnprocessableEntity, map[string]string{
26-
"message": err.Error(),
27-
})
28-
}
29-
30-
story, err := ctr.StoryService.FindById(r.StoryID)
31+
story, err := ctr.StoryService.FindById(utils.StringToID(ctx.Param("storyId"), 0))
3132
if err != nil {
3233
return err
3334
}
@@ -42,28 +43,11 @@ func LikesStore(ctr *container.Container) echo.HandlerFunc {
4243
})
4344
}
4445
}
45-
46-
type LikesDeleteRequest struct {
47-
LikeID uint64 `json:"like_id" validate:"required"`
48-
}
49-
5046
func LikesDelete(ctr *container.Container) echo.HandlerFunc {
5147
return func(ctx echo.Context) error {
5248
user := ctx.Get("user").(*models.User)
5349

54-
var r LikesDeleteRequest
55-
if err := ctx.Bind(&r); err != nil {
56-
return ctx.JSON(http.StatusBadRequest, map[string]string{
57-
"message": "Cannot parse the request body.",
58-
})
59-
}
60-
if err := ctx.Validate(r); err != nil {
61-
return ctx.JSON(http.StatusUnprocessableEntity, map[string]string{
62-
"message": err.Error(),
63-
})
64-
}
65-
66-
like, err := ctr.LikeService.FindById(r.LikeID)
50+
like, err := ctr.LikeService.FindById(utils.StringToID(ctx.Param("likeId"), 0))
6751
if err != nil {
6852
return err
6953
}

0 commit comments

Comments
 (0)