1
0
mirror of https://github.com/muety/wakapi.git synced 2023-08-10 21:12:56 +03:00

refactor: include generics based utility lib and refactor some parts accordingly [ci-skip]

This commit is contained in:
Ferdinand Mütsch 2022-03-20 16:27:21 +01:00
parent a675417ab9
commit 8fc0d78f64
16 changed files with 543 additions and 797 deletions

View File

@ -1,95 +1,10 @@
mode: set
github.com/muety/wakapi/models/duration.go:24.55,38.2 2 0
github.com/muety/wakapi/models/duration.go:40.39,42.16 2 0
github.com/muety/wakapi/models/duration.go:45.2,46.10 2 0
github.com/muety/wakapi/models/duration.go:42.16,44.3 1 0
github.com/muety/wakapi/models/duration.go:49.49,50.11 1 0
github.com/muety/wakapi/models/duration.go:65.2,65.15 1 0
github.com/muety/wakapi/models/duration.go:69.2,69.12 1 0
github.com/muety/wakapi/models/duration.go:51.22,52.18 1 0
github.com/muety/wakapi/models/duration.go:53.21,54.17 1 0
github.com/muety/wakapi/models/duration.go:55.23,56.19 1 0
github.com/muety/wakapi/models/duration.go:57.17,58.26 1 0
github.com/muety/wakapi/models/duration.go:59.22,60.18 1 0
github.com/muety/wakapi/models/duration.go:61.21,62.17 1 0
github.com/muety/wakapi/models/duration.go:65.15,67.3 1 0
github.com/muety/wakapi/models/durations.go:7.30,9.2 1 0
github.com/muety/wakapi/models/durations.go:11.40,13.2 1 0
github.com/muety/wakapi/models/durations.go:15.35,17.2 1 0
github.com/muety/wakapi/models/durations.go:19.45,21.22 2 0
github.com/muety/wakapi/models/durations.go:24.2,24.14 1 0
github.com/muety/wakapi/models/durations.go:21.22,23.3 1 0
github.com/muety/wakapi/models/durations.go:27.39,30.2 2 0
github.com/muety/wakapi/models/durations.go:32.39,34.18 1 0
github.com/muety/wakapi/models/durations.go:37.2,37.16 1 0
github.com/muety/wakapi/models/durations.go:34.18,36.3 1 0
github.com/muety/wakapi/models/durations.go:40.38,42.18 1 0
github.com/muety/wakapi/models/durations.go:45.2,45.24 1 0
github.com/muety/wakapi/models/durations.go:42.18,44.3 1 0
github.com/muety/wakapi/models/heartbeat.go:33.34,35.2 1 1
github.com/muety/wakapi/models/heartbeat.go:37.55,40.2 2 0
github.com/muety/wakapi/models/heartbeat.go:42.65,44.46 2 1
github.com/muety/wakapi/models/heartbeat.go:44.46,45.108 1 1
github.com/muety/wakapi/models/heartbeat.go:45.108,48.4 2 1
github.com/muety/wakapi/models/heartbeat.go:52.50,53.11 1 1
github.com/muety/wakapi/models/heartbeat.go:68.2,68.15 1 1
github.com/muety/wakapi/models/heartbeat.go:72.2,72.12 1 1
github.com/muety/wakapi/models/heartbeat.go:54.22,55.18 1 1
github.com/muety/wakapi/models/heartbeat.go:56.21,57.17 1 1
github.com/muety/wakapi/models/heartbeat.go:58.23,59.19 1 1
github.com/muety/wakapi/models/heartbeat.go:60.17,61.26 1 1
github.com/muety/wakapi/models/heartbeat.go:62.22,63.18 1 1
github.com/muety/wakapi/models/heartbeat.go:64.21,65.17 1 0
github.com/muety/wakapi/models/heartbeat.go:68.15,70.3 1 1
github.com/muety/wakapi/models/heartbeat.go:75.37,91.2 1 0
github.com/muety/wakapi/models/heartbeat.go:99.41,101.16 2 0
github.com/muety/wakapi/models/heartbeat.go:104.2,105.10 2 0
github.com/muety/wakapi/models/heartbeat.go:101.16,103.3 1 0
github.com/muety/wakapi/models/heartbeat.go:108.38,118.2 1 0
github.com/muety/wakapi/models/heartbeats.go:7.31,9.2 1 0
github.com/muety/wakapi/models/heartbeats.go:11.41,13.2 1 0
github.com/muety/wakapi/models/heartbeats.go:15.36,17.2 1 0
github.com/muety/wakapi/models/heartbeats.go:19.43,22.2 2 0
github.com/muety/wakapi/models/heartbeats.go:24.41,26.18 1 0
github.com/muety/wakapi/models/heartbeats.go:29.2,29.16 1 0
github.com/muety/wakapi/models/heartbeats.go:26.18,28.3 1 0
github.com/muety/wakapi/models/heartbeats.go:32.40,34.18 1 0
github.com/muety/wakapi/models/heartbeats.go:37.2,37.24 1 0
github.com/muety/wakapi/models/heartbeats.go:34.18,36.3 1 0
github.com/muety/wakapi/models/interval.go:39.47,40.23 1 0
github.com/muety/wakapi/models/interval.go:45.2,45.14 1 0
github.com/muety/wakapi/models/interval.go:40.23,41.13 1 0
github.com/muety/wakapi/models/interval.go:41.13,43.4 1 0
github.com/muety/wakapi/models/mail.go:19.44,23.2 3 0
github.com/muety/wakapi/models/mail.go:25.44,29.2 3 0
github.com/muety/wakapi/models/mail.go:31.32,44.2 1 0
github.com/muety/wakapi/models/mail.go:46.41,48.2 1 0
github.com/muety/wakapi/models/alias.go:18.32,20.2 1 0
github.com/muety/wakapi/models/alias.go:22.37,23.35 1 0
github.com/muety/wakapi/models/alias.go:28.2,28.14 1 0
github.com/muety/wakapi/models/alias.go:23.35,24.18 1 0
github.com/muety/wakapi/models/alias.go:24.18,26.4 1 0
github.com/muety/wakapi/models/language_mapping.go:11.42,13.2 1 0
github.com/muety/wakapi/models/language_mapping.go:15.51,17.2 1 0
github.com/muety/wakapi/models/language_mapping.go:19.52,21.2 1 0
github.com/muety/wakapi/models/mail_address.go:15.13,18.2 2 1
github.com/muety/wakapi/models/mail_address.go:24.38,26.2 1 0
github.com/muety/wakapi/models/mail_address.go:28.35,30.21 2 1
github.com/muety/wakapi/models/mail_address.go:36.2,36.11 1 1
github.com/muety/wakapi/models/mail_address.go:30.21,31.21 1 1
github.com/muety/wakapi/models/mail_address.go:34.3,34.18 1 1
github.com/muety/wakapi/models/mail_address.go:31.21,33.4 1 1
github.com/muety/wakapi/models/mail_address.go:39.35,41.2 1 1
github.com/muety/wakapi/models/mail_address.go:43.43,45.22 2 0
github.com/muety/wakapi/models/mail_address.go:48.2,48.12 1 0
github.com/muety/wakapi/models/mail_address.go:45.22,47.3 1 0
github.com/muety/wakapi/models/mail_address.go:51.46,53.22 2 1
github.com/muety/wakapi/models/mail_address.go:56.2,56.12 1 1
github.com/muety/wakapi/models/mail_address.go:53.22,55.3 1 1
github.com/muety/wakapi/models/mail_address.go:59.40,60.22 1 1
github.com/muety/wakapi/models/mail_address.go:65.2,65.13 1 1
github.com/muety/wakapi/models/mail_address.go:60.22,61.17 1 1
github.com/muety/wakapi/models/mail_address.go:61.17,63.4 1 1
github.com/muety/wakapi/models/project_label.go:14.39,16.2 1 0
github.com/muety/wakapi/models/summary.go:64.29,66.2 1 1
github.com/muety/wakapi/models/summary.go:68.35,70.2 1 0
github.com/muety/wakapi/models/summary.go:72.38,74.2 1 0
@ -188,8 +103,6 @@ github.com/muety/wakapi/models/summary.go:359.50,363.2 1 1
github.com/muety/wakapi/models/summary.go:365.33,367.2 1 1
github.com/muety/wakapi/models/summary.go:369.43,371.2 1 1
github.com/muety/wakapi/models/summary.go:373.38,375.2 1 1
github.com/muety/wakapi/models/models.go:3.14,5.2 0 1
github.com/muety/wakapi/models/project_label.go:14.39,16.2 1 0
github.com/muety/wakapi/models/user.go:11.13,13.2 1 1
github.com/muety/wakapi/models/user.go:83.36,84.22 1 1
github.com/muety/wakapi/models/user.go:87.2,88.16 2 1
@ -300,6 +213,44 @@ github.com/muety/wakapi/models/filters.go:219.2,219.28 1 1
github.com/muety/wakapi/models/filters.go:222.2,222.10 1 1
github.com/muety/wakapi/models/filters.go:216.41,218.3 1 0
github.com/muety/wakapi/models/filters.go:219.28,221.3 1 1
github.com/muety/wakapi/models/heartbeat.go:33.34,35.2 1 1
github.com/muety/wakapi/models/heartbeat.go:37.55,40.2 2 0
github.com/muety/wakapi/models/heartbeat.go:42.65,44.46 2 1
github.com/muety/wakapi/models/heartbeat.go:44.46,45.108 1 1
github.com/muety/wakapi/models/heartbeat.go:45.108,48.4 2 1
github.com/muety/wakapi/models/heartbeat.go:52.50,53.11 1 1
github.com/muety/wakapi/models/heartbeat.go:68.2,68.15 1 1
github.com/muety/wakapi/models/heartbeat.go:72.2,72.12 1 1
github.com/muety/wakapi/models/heartbeat.go:54.22,55.18 1 1
github.com/muety/wakapi/models/heartbeat.go:56.21,57.17 1 1
github.com/muety/wakapi/models/heartbeat.go:58.23,59.19 1 1
github.com/muety/wakapi/models/heartbeat.go:60.17,61.26 1 1
github.com/muety/wakapi/models/heartbeat.go:62.22,63.18 1 1
github.com/muety/wakapi/models/heartbeat.go:64.21,65.17 1 0
github.com/muety/wakapi/models/heartbeat.go:68.15,70.3 1 1
github.com/muety/wakapi/models/heartbeat.go:75.37,91.2 1 0
github.com/muety/wakapi/models/heartbeat.go:99.41,101.16 2 0
github.com/muety/wakapi/models/heartbeat.go:104.2,105.10 2 0
github.com/muety/wakapi/models/heartbeat.go:101.16,103.3 1 0
github.com/muety/wakapi/models/heartbeat.go:108.38,118.2 1 0
github.com/muety/wakapi/models/mail_address.go:15.13,18.2 2 1
github.com/muety/wakapi/models/mail_address.go:24.38,26.2 1 0
github.com/muety/wakapi/models/mail_address.go:28.35,30.21 2 1
github.com/muety/wakapi/models/mail_address.go:36.2,36.11 1 1
github.com/muety/wakapi/models/mail_address.go:30.21,31.21 1 1
github.com/muety/wakapi/models/mail_address.go:34.3,34.18 1 1
github.com/muety/wakapi/models/mail_address.go:31.21,33.4 1 1
github.com/muety/wakapi/models/mail_address.go:39.35,41.2 1 1
github.com/muety/wakapi/models/mail_address.go:43.43,45.22 2 0
github.com/muety/wakapi/models/mail_address.go:48.2,48.12 1 0
github.com/muety/wakapi/models/mail_address.go:45.22,47.3 1 0
github.com/muety/wakapi/models/mail_address.go:51.46,53.22 2 1
github.com/muety/wakapi/models/mail_address.go:56.2,56.12 1 1
github.com/muety/wakapi/models/mail_address.go:53.22,55.3 1 1
github.com/muety/wakapi/models/mail_address.go:59.40,60.22 1 1
github.com/muety/wakapi/models/mail_address.go:65.2,65.13 1 1
github.com/muety/wakapi/models/mail_address.go:60.22,61.17 1 1
github.com/muety/wakapi/models/mail_address.go:61.17,63.4 1 1
github.com/muety/wakapi/models/shared.go:35.52,37.2 1 0
github.com/muety/wakapi/models/shared.go:39.52,42.16 3 0
github.com/muety/wakapi/models/shared.go:45.2,47.12 3 0
@ -315,47 +266,55 @@ github.com/muety/wakapi/models/shared.go:82.45,84.2 1 0
github.com/muety/wakapi/models/shared.go:86.37,88.2 1 0
github.com/muety/wakapi/models/shared.go:90.35,92.2 1 0
github.com/muety/wakapi/models/shared.go:94.34,96.2 1 0
github.com/muety/wakapi/config/fs.go:9.56,10.19 1 0
github.com/muety/wakapi/config/fs.go:13.2,13.19 1 0
github.com/muety/wakapi/config/fs.go:10.19,12.3 1 0
github.com/muety/wakapi/config/sentry.go:22.35,24.2 1 0
github.com/muety/wakapi/config/sentry.go:26.62,29.2 2 0
github.com/muety/wakapi/config/sentry.go:39.33,46.2 2 0
github.com/muety/wakapi/config/sentry.go:48.79,51.2 2 0
github.com/muety/wakapi/config/sentry.go:53.72,57.2 3 0
github.com/muety/wakapi/config/sentry.go:59.71,63.2 3 0
github.com/muety/wakapi/config/sentry.go:65.71,69.2 3 0
github.com/muety/wakapi/config/sentry.go:71.72,75.2 3 0
github.com/muety/wakapi/config/sentry.go:77.72,81.2 3 0
github.com/muety/wakapi/config/sentry.go:83.67,88.18 4 0
github.com/muety/wakapi/config/sentry.go:100.2,100.28 1 0
github.com/muety/wakapi/config/sentry.go:88.18,89.65 1 0
github.com/muety/wakapi/config/sentry.go:89.65,92.42 3 0
github.com/muety/wakapi/config/sentry.go:95.4,96.10 2 0
github.com/muety/wakapi/config/sentry.go:92.42,94.5 1 0
github.com/muety/wakapi/config/sentry.go:110.50,114.91 1 0
github.com/muety/wakapi/config/sentry.go:114.91,115.29 1 0
github.com/muety/wakapi/config/sentry.go:119.4,122.38 3 0
github.com/muety/wakapi/config/sentry.go:127.4,127.39 1 0
github.com/muety/wakapi/config/sentry.go:130.4,130.69 1 0
github.com/muety/wakapi/config/sentry.go:115.29,117.5 1 0
github.com/muety/wakapi/config/sentry.go:122.38,123.38 1 0
github.com/muety/wakapi/config/sentry.go:123.38,125.6 1 0
github.com/muety/wakapi/config/sentry.go:127.39,129.5 1 0
github.com/muety/wakapi/config/sentry.go:132.79,133.27 1 0
github.com/muety/wakapi/config/sentry.go:140.4,140.16 1 0
github.com/muety/wakapi/config/sentry.go:133.27,134.84 1 0
github.com/muety/wakapi/config/sentry.go:134.84,135.42 1 0
github.com/muety/wakapi/config/sentry.go:135.42,137.7 1 0
github.com/muety/wakapi/config/sentry.go:142.17,144.3 1 0
github.com/muety/wakapi/config/sentry.go:147.49,151.51 2 0
github.com/muety/wakapi/config/sentry.go:154.2,154.12 1 0
github.com/muety/wakapi/config/sentry.go:151.51,153.3 1 0
github.com/muety/wakapi/config/utils.go:5.78,7.22 2 0
github.com/muety/wakapi/config/utils.go:13.2,13.11 1 0
github.com/muety/wakapi/config/utils.go:7.22,8.18 1 0
github.com/muety/wakapi/config/utils.go:11.3,11.12 1 0
github.com/muety/wakapi/config/utils.go:8.18,10.4 1 0
github.com/muety/wakapi/models/models.go:3.14,5.2 0 1
github.com/muety/wakapi/models/durations.go:7.30,9.2 1 0
github.com/muety/wakapi/models/durations.go:11.40,13.2 1 0
github.com/muety/wakapi/models/durations.go:15.35,17.2 1 0
github.com/muety/wakapi/models/durations.go:19.45,21.22 2 0
github.com/muety/wakapi/models/durations.go:24.2,24.14 1 0
github.com/muety/wakapi/models/durations.go:21.22,23.3 1 0
github.com/muety/wakapi/models/durations.go:27.39,30.2 2 0
github.com/muety/wakapi/models/durations.go:32.39,34.18 1 0
github.com/muety/wakapi/models/durations.go:37.2,37.16 1 0
github.com/muety/wakapi/models/durations.go:34.18,36.3 1 0
github.com/muety/wakapi/models/durations.go:40.38,42.18 1 0
github.com/muety/wakapi/models/durations.go:45.2,45.24 1 0
github.com/muety/wakapi/models/durations.go:42.18,44.3 1 0
github.com/muety/wakapi/models/heartbeats.go:7.31,9.2 1 0
github.com/muety/wakapi/models/heartbeats.go:11.41,13.2 1 0
github.com/muety/wakapi/models/heartbeats.go:15.36,17.2 1 0
github.com/muety/wakapi/models/heartbeats.go:19.43,22.2 2 0
github.com/muety/wakapi/models/heartbeats.go:24.41,26.18 1 0
github.com/muety/wakapi/models/heartbeats.go:29.2,29.16 1 0
github.com/muety/wakapi/models/heartbeats.go:26.18,28.3 1 0
github.com/muety/wakapi/models/heartbeats.go:32.40,34.18 1 0
github.com/muety/wakapi/models/heartbeats.go:37.2,37.24 1 0
github.com/muety/wakapi/models/heartbeats.go:34.18,36.3 1 0
github.com/muety/wakapi/models/interval.go:39.47,40.23 1 0
github.com/muety/wakapi/models/interval.go:45.2,45.14 1 0
github.com/muety/wakapi/models/interval.go:40.23,41.13 1 0
github.com/muety/wakapi/models/interval.go:41.13,43.4 1 0
github.com/muety/wakapi/models/mail.go:19.44,23.2 3 0
github.com/muety/wakapi/models/mail.go:25.44,29.2 3 0
github.com/muety/wakapi/models/mail.go:31.32,44.2 1 0
github.com/muety/wakapi/models/mail.go:46.41,48.2 1 0
github.com/muety/wakapi/models/duration.go:24.55,38.2 2 0
github.com/muety/wakapi/models/duration.go:40.39,42.16 2 0
github.com/muety/wakapi/models/duration.go:45.2,46.10 2 0
github.com/muety/wakapi/models/duration.go:42.16,44.3 1 0
github.com/muety/wakapi/models/duration.go:49.49,50.11 1 0
github.com/muety/wakapi/models/duration.go:65.2,65.15 1 0
github.com/muety/wakapi/models/duration.go:69.2,69.12 1 0
github.com/muety/wakapi/models/duration.go:51.22,52.18 1 0
github.com/muety/wakapi/models/duration.go:53.21,54.17 1 0
github.com/muety/wakapi/models/duration.go:55.23,56.19 1 0
github.com/muety/wakapi/models/duration.go:57.17,58.26 1 0
github.com/muety/wakapi/models/duration.go:59.22,60.18 1 0
github.com/muety/wakapi/models/duration.go:61.21,62.17 1 0
github.com/muety/wakapi/models/duration.go:65.15,67.3 1 0
github.com/muety/wakapi/models/language_mapping.go:11.42,13.2 1 0
github.com/muety/wakapi/models/language_mapping.go:15.51,17.2 1 0
github.com/muety/wakapi/models/language_mapping.go:19.52,21.2 1 0
github.com/muety/wakapi/config/config.go:157.64,159.2 1 0
github.com/muety/wakapi/config/config.go:161.59,163.2 1 0
github.com/muety/wakapi/config/config.go:165.82,175.2 1 0
@ -461,39 +420,72 @@ github.com/muety/wakapi/config/db.go:70.16,72.3 1 0
github.com/muety/wakapi/config/db.go:84.54,86.2 1 1
github.com/muety/wakapi/config/eventbus.go:26.13,28.2 1 1
github.com/muety/wakapi/config/eventbus.go:30.26,32.2 1 0
github.com/muety/wakapi/utils/collection.go:3.59,5.22 2 0
github.com/muety/wakapi/utils/collection.go:8.2,8.15 1 0
github.com/muety/wakapi/utils/collection.go:5.22,7.3 1 0
github.com/muety/wakapi/utils/strings.go:8.34,10.2 1 0
github.com/muety/wakapi/utils/strings.go:12.77,13.29 1 0
github.com/muety/wakapi/utils/strings.go:18.2,18.19 1 0
github.com/muety/wakapi/utils/strings.go:13.29,14.18 1 0
github.com/muety/wakapi/utils/strings.go:14.18,16.4 1 0
github.com/muety/wakapi/utils/template.go:13.41,15.16 2 0
github.com/muety/wakapi/utils/template.go:18.2,18.23 1 0
github.com/muety/wakapi/utils/template.go:15.16,17.3 1 0
github.com/muety/wakapi/utils/template.go:21.37,22.30 1 0
github.com/muety/wakapi/utils/template.go:25.2,25.10 1 0
github.com/muety/wakapi/utils/template.go:22.30,24.3 1 0
github.com/muety/wakapi/utils/template.go:28.83,33.16 4 0
github.com/muety/wakapi/utils/template.go:37.2,37.29 1 0
github.com/muety/wakapi/utils/template.go:62.2,62.23 1 0
github.com/muety/wakapi/utils/template.go:33.16,35.3 1 0
github.com/muety/wakapi/utils/template.go:37.29,39.51 2 0
github.com/muety/wakapi/utils/template.go:43.3,44.17 2 0
github.com/muety/wakapi/utils/template.go:47.3,48.17 2 0
github.com/muety/wakapi/utils/template.go:52.3,55.17 3 0
github.com/muety/wakapi/utils/template.go:59.3,59.27 1 0
github.com/muety/wakapi/utils/template.go:39.51,40.12 1 0
github.com/muety/wakapi/utils/template.go:44.17,46.4 1 0
github.com/muety/wakapi/utils/template.go:48.17,50.4 1 0
github.com/muety/wakapi/utils/template.go:55.17,57.4 1 0
github.com/muety/wakapi/utils/set.go:3.51,5.26 2 0
github.com/muety/wakapi/utils/set.go:8.2,8.12 1 0
github.com/muety/wakapi/utils/set.go:5.26,7.3 1 0
github.com/muety/wakapi/utils/set.go:11.49,13.21 2 0
github.com/muety/wakapi/utils/set.go:16.2,16.14 1 0
github.com/muety/wakapi/utils/set.go:13.21,15.3 1 0
github.com/muety/wakapi/config/fs.go:9.56,10.19 1 0
github.com/muety/wakapi/config/fs.go:13.2,13.19 1 0
github.com/muety/wakapi/config/fs.go:10.19,12.3 1 0
github.com/muety/wakapi/config/sentry.go:22.35,24.2 1 0
github.com/muety/wakapi/config/sentry.go:26.62,29.2 2 0
github.com/muety/wakapi/config/sentry.go:39.33,46.2 2 0
github.com/muety/wakapi/config/sentry.go:48.79,51.2 2 0
github.com/muety/wakapi/config/sentry.go:53.72,57.2 3 0
github.com/muety/wakapi/config/sentry.go:59.71,63.2 3 0
github.com/muety/wakapi/config/sentry.go:65.71,69.2 3 0
github.com/muety/wakapi/config/sentry.go:71.72,75.2 3 0
github.com/muety/wakapi/config/sentry.go:77.72,81.2 3 0
github.com/muety/wakapi/config/sentry.go:83.67,88.18 4 0
github.com/muety/wakapi/config/sentry.go:100.2,100.28 1 0
github.com/muety/wakapi/config/sentry.go:88.18,89.65 1 0
github.com/muety/wakapi/config/sentry.go:89.65,92.42 3 0
github.com/muety/wakapi/config/sentry.go:95.4,96.10 2 0
github.com/muety/wakapi/config/sentry.go:92.42,94.5 1 0
github.com/muety/wakapi/config/sentry.go:110.50,114.91 1 0
github.com/muety/wakapi/config/sentry.go:114.91,115.29 1 0
github.com/muety/wakapi/config/sentry.go:119.4,122.38 3 0
github.com/muety/wakapi/config/sentry.go:127.4,127.39 1 0
github.com/muety/wakapi/config/sentry.go:130.4,130.69 1 0
github.com/muety/wakapi/config/sentry.go:115.29,117.5 1 0
github.com/muety/wakapi/config/sentry.go:122.38,123.38 1 0
github.com/muety/wakapi/config/sentry.go:123.38,125.6 1 0
github.com/muety/wakapi/config/sentry.go:127.39,129.5 1 0
github.com/muety/wakapi/config/sentry.go:132.79,133.27 1 0
github.com/muety/wakapi/config/sentry.go:140.4,140.16 1 0
github.com/muety/wakapi/config/sentry.go:133.27,134.84 1 0
github.com/muety/wakapi/config/sentry.go:134.84,135.42 1 0
github.com/muety/wakapi/config/sentry.go:135.42,137.7 1 0
github.com/muety/wakapi/config/sentry.go:142.17,144.3 1 0
github.com/muety/wakapi/config/sentry.go:147.49,151.51 2 0
github.com/muety/wakapi/config/sentry.go:154.2,154.12 1 0
github.com/muety/wakapi/config/sentry.go:151.51,153.3 1 0
github.com/muety/wakapi/config/utils.go:5.78,7.22 2 0
github.com/muety/wakapi/config/utils.go:13.2,13.11 1 0
github.com/muety/wakapi/config/utils.go:7.22,8.18 1 0
github.com/muety/wakapi/config/utils.go:11.3,11.12 1 0
github.com/muety/wakapi/config/utils.go:8.18,10.4 1 0
github.com/muety/wakapi/utils/common.go:18.73,19.58 1 0
github.com/muety/wakapi/utils/common.go:22.2,22.87 1 0
github.com/muety/wakapi/utils/common.go:25.2,25.64 1 0
github.com/muety/wakapi/utils/common.go:19.58,21.3 1 0
github.com/muety/wakapi/utils/common.go:22.87,24.3 1 0
github.com/muety/wakapi/utils/common.go:28.40,30.2 1 0
github.com/muety/wakapi/utils/common.go:32.44,34.2 1 0
github.com/muety/wakapi/utils/common.go:36.49,38.2 1 0
github.com/muety/wakapi/utils/common.go:40.45,42.2 1 0
github.com/muety/wakapi/utils/common.go:44.24,46.2 1 0
github.com/muety/wakapi/utils/common.go:48.56,51.45 3 1
github.com/muety/wakapi/utils/common.go:54.2,54.40 1 1
github.com/muety/wakapi/utils/common.go:51.45,53.3 1 1
github.com/muety/wakapi/utils/db.go:8.34,9.37 1 0
github.com/muety/wakapi/utils/db.go:17.2,18.14 2 0
github.com/muety/wakapi/utils/db.go:9.37,11.110 2 0
github.com/muety/wakapi/utils/db.go:15.3,15.20 1 0
github.com/muety/wakapi/utils/db.go:11.110,14.4 2 0
github.com/muety/wakapi/utils/db.go:21.39,22.37 1 0
github.com/muety/wakapi/utils/db.go:30.2,31.14 2 0
github.com/muety/wakapi/utils/db.go:22.37,24.119 2 0
github.com/muety/wakapi/utils/db.go:28.3,28.20 1 0
github.com/muety/wakapi/utils/db.go:24.119,27.4 2 0
github.com/muety/wakapi/utils/http.go:9.90,12.58 3 0
github.com/muety/wakapi/utils/http.go:12.58,14.3 1 0
github.com/muety/wakapi/utils/summary.go:10.66,11.40 1 0
github.com/muety/wakapi/utils/summary.go:16.2,16.48 1 0
github.com/muety/wakapi/utils/summary.go:11.40,12.27 1 0
@ -545,6 +537,63 @@ github.com/muety/wakapi/utils/summary.go:130.47,132.3 1 0
github.com/muety/wakapi/utils/summary.go:136.48,140.51 2 0
github.com/muety/wakapi/utils/summary.go:143.2,143.12 1 0
github.com/muety/wakapi/utils/summary.go:140.51,142.3 1 0
github.com/muety/wakapi/utils/color.go:8.90,10.32 2 0
github.com/muety/wakapi/utils/color.go:15.2,15.15 1 0
github.com/muety/wakapi/utils/color.go:10.32,11.50 1 0
github.com/muety/wakapi/utils/color.go:11.50,13.4 1 0
github.com/muety/wakapi/utils/date.go:14.43,16.2 1 1
github.com/muety/wakapi/utils/date.go:18.48,20.2 1 0
github.com/muety/wakapi/utils/date.go:22.41,24.21 2 1
github.com/muety/wakapi/utils/date.go:27.2,27.23 1 1
github.com/muety/wakapi/utils/date.go:24.21,26.3 1 0
github.com/muety/wakapi/utils/date.go:30.46,32.2 1 0
github.com/muety/wakapi/utils/date.go:34.51,36.2 1 0
github.com/muety/wakapi/utils/date.go:38.44,41.2 2 1
github.com/muety/wakapi/utils/date.go:43.52,45.2 1 0
github.com/muety/wakapi/utils/date.go:47.45,49.2 1 0
github.com/muety/wakapi/utils/date.go:51.51,53.2 1 0
github.com/muety/wakapi/utils/date.go:55.44,57.2 1 0
github.com/muety/wakapi/utils/date.go:60.42,62.2 1 1
github.com/muety/wakapi/utils/date.go:65.46,67.2 1 0
github.com/muety/wakapi/utils/date.go:70.41,72.21 2 1
github.com/muety/wakapi/utils/date.go:75.2,75.33 1 1
github.com/muety/wakapi/utils/date.go:72.21,74.3 1 1
github.com/muety/wakapi/utils/date.go:79.63,81.2 1 0
github.com/muety/wakapi/utils/date.go:84.62,90.2 5 0
github.com/muety/wakapi/utils/date.go:93.67,96.33 2 1
github.com/muety/wakapi/utils/date.go:105.2,105.18 1 1
github.com/muety/wakapi/utils/date.go:96.33,98.19 2 1
github.com/muety/wakapi/utils/date.go:101.3,102.10 2 1
github.com/muety/wakapi/utils/date.go:98.19,100.4 1 1
github.com/muety/wakapi/utils/date.go:108.50,114.2 5 0
github.com/muety/wakapi/utils/date.go:117.36,120.2 2 0
github.com/muety/wakapi/utils/date.go:123.79,126.36 3 1
github.com/muety/wakapi/utils/date.go:130.2,130.21 1 1
github.com/muety/wakapi/utils/date.go:134.2,134.21 1 1
github.com/muety/wakapi/utils/date.go:138.2,138.13 1 1
github.com/muety/wakapi/utils/date.go:126.36,129.3 2 0
github.com/muety/wakapi/utils/date.go:130.21,133.3 2 1
github.com/muety/wakapi/utils/date.go:134.21,137.3 2 1
github.com/muety/wakapi/utils/strings.go:8.34,10.2 1 0
github.com/muety/wakapi/utils/template.go:13.41,15.16 2 0
github.com/muety/wakapi/utils/template.go:18.2,18.23 1 0
github.com/muety/wakapi/utils/template.go:15.16,17.3 1 0
github.com/muety/wakapi/utils/template.go:21.37,22.30 1 0
github.com/muety/wakapi/utils/template.go:25.2,25.10 1 0
github.com/muety/wakapi/utils/template.go:22.30,24.3 1 0
github.com/muety/wakapi/utils/template.go:28.83,33.16 4 0
github.com/muety/wakapi/utils/template.go:37.2,37.29 1 0
github.com/muety/wakapi/utils/template.go:62.2,62.23 1 0
github.com/muety/wakapi/utils/template.go:33.16,35.3 1 0
github.com/muety/wakapi/utils/template.go:37.29,39.51 2 0
github.com/muety/wakapi/utils/template.go:43.3,44.17 2 0
github.com/muety/wakapi/utils/template.go:47.3,48.17 2 0
github.com/muety/wakapi/utils/template.go:52.3,55.17 3 0
github.com/muety/wakapi/utils/template.go:59.3,59.27 1 0
github.com/muety/wakapi/utils/template.go:39.51,40.12 1 0
github.com/muety/wakapi/utils/template.go:44.17,46.4 1 0
github.com/muety/wakapi/utils/template.go:48.17,50.4 1 0
github.com/muety/wakapi/utils/template.go:55.17,57.4 1 0
github.com/muety/wakapi/utils/auth.go:16.79,18.54 2 0
github.com/muety/wakapi/utils/auth.go:22.2,24.16 3 0
github.com/muety/wakapi/utils/auth.go:28.2,30.45 3 0
@ -564,68 +613,6 @@ github.com/muety/wakapi/utils/auth.go:60.56,64.2 3 0
github.com/muety/wakapi/utils/auth.go:66.55,69.16 3 0
github.com/muety/wakapi/utils/auth.go:72.2,72.16 1 0
github.com/muety/wakapi/utils/auth.go:69.16,71.3 1 0
github.com/muety/wakapi/utils/color.go:8.90,10.32 2 0
github.com/muety/wakapi/utils/color.go:15.2,15.15 1 0
github.com/muety/wakapi/utils/color.go:10.32,11.50 1 0
github.com/muety/wakapi/utils/color.go:11.50,13.4 1 0
github.com/muety/wakapi/utils/common.go:18.73,19.58 1 0
github.com/muety/wakapi/utils/common.go:22.2,22.87 1 0
github.com/muety/wakapi/utils/common.go:25.2,25.64 1 0
github.com/muety/wakapi/utils/common.go:19.58,21.3 1 0
github.com/muety/wakapi/utils/common.go:22.87,24.3 1 0
github.com/muety/wakapi/utils/common.go:28.40,30.2 1 0
github.com/muety/wakapi/utils/common.go:32.44,34.2 1 0
github.com/muety/wakapi/utils/common.go:36.49,38.2 1 0
github.com/muety/wakapi/utils/common.go:40.45,42.2 1 0
github.com/muety/wakapi/utils/common.go:44.24,46.2 1 0
github.com/muety/wakapi/utils/common.go:48.56,51.45 3 1
github.com/muety/wakapi/utils/common.go:54.2,54.40 1 1
github.com/muety/wakapi/utils/common.go:51.45,53.3 1 1
github.com/muety/wakapi/utils/date.go:8.43,10.2 1 1
github.com/muety/wakapi/utils/date.go:12.48,14.2 1 0
github.com/muety/wakapi/utils/date.go:16.41,18.21 2 1
github.com/muety/wakapi/utils/date.go:21.2,21.23 1 1
github.com/muety/wakapi/utils/date.go:18.21,20.3 1 0
github.com/muety/wakapi/utils/date.go:24.46,26.2 1 0
github.com/muety/wakapi/utils/date.go:28.51,30.2 1 0
github.com/muety/wakapi/utils/date.go:32.44,35.2 2 1
github.com/muety/wakapi/utils/date.go:37.52,39.2 1 0
github.com/muety/wakapi/utils/date.go:41.45,43.2 1 0
github.com/muety/wakapi/utils/date.go:45.51,47.2 1 0
github.com/muety/wakapi/utils/date.go:49.44,51.2 1 0
github.com/muety/wakapi/utils/date.go:54.42,56.2 1 1
github.com/muety/wakapi/utils/date.go:59.46,61.2 1 0
github.com/muety/wakapi/utils/date.go:64.41,66.21 2 1
github.com/muety/wakapi/utils/date.go:69.2,69.33 1 1
github.com/muety/wakapi/utils/date.go:66.21,68.3 1 1
github.com/muety/wakapi/utils/date.go:73.63,75.2 1 0
github.com/muety/wakapi/utils/date.go:78.62,84.2 5 0
github.com/muety/wakapi/utils/date.go:87.67,90.33 2 1
github.com/muety/wakapi/utils/date.go:99.2,99.18 1 1
github.com/muety/wakapi/utils/date.go:90.33,92.19 2 1
github.com/muety/wakapi/utils/date.go:95.3,96.10 2 1
github.com/muety/wakapi/utils/date.go:92.19,94.4 1 1
github.com/muety/wakapi/utils/date.go:102.50,108.2 5 0
github.com/muety/wakapi/utils/date.go:111.36,114.2 2 0
github.com/muety/wakapi/utils/date.go:117.79,120.36 3 1
github.com/muety/wakapi/utils/date.go:124.2,124.21 1 1
github.com/muety/wakapi/utils/date.go:128.2,128.21 1 1
github.com/muety/wakapi/utils/date.go:132.2,132.13 1 1
github.com/muety/wakapi/utils/date.go:120.36,123.3 2 0
github.com/muety/wakapi/utils/date.go:124.21,127.3 2 1
github.com/muety/wakapi/utils/date.go:128.21,131.3 2 1
github.com/muety/wakapi/utils/db.go:8.34,9.37 1 0
github.com/muety/wakapi/utils/db.go:17.2,18.14 2 0
github.com/muety/wakapi/utils/db.go:9.37,11.110 2 0
github.com/muety/wakapi/utils/db.go:15.3,15.20 1 0
github.com/muety/wakapi/utils/db.go:11.110,14.4 2 0
github.com/muety/wakapi/utils/db.go:21.39,22.37 1 0
github.com/muety/wakapi/utils/db.go:30.2,31.14 2 0
github.com/muety/wakapi/utils/db.go:22.37,24.119 2 0
github.com/muety/wakapi/utils/db.go:28.3,28.20 1 0
github.com/muety/wakapi/utils/db.go:24.119,27.4 2 0
github.com/muety/wakapi/utils/http.go:9.90,12.58 3 0
github.com/muety/wakapi/utils/http.go:12.58,14.3 1 0
github.com/muety/wakapi/routes/compat/shields/v1/badge.go:30.112,37.2 1 0
github.com/muety/wakapi/routes/compat/shields/v1/badge.go:39.59,43.2 2 0
github.com/muety/wakapi/routes/compat/shields/v1/badge.go:55.68,60.79 4 0
@ -749,6 +736,97 @@ github.com/muety/wakapi/middlewares/logging.go:142.36,144.2 1 0
github.com/muety/wakapi/middlewares/logging.go:145.42,147.2 1 0
github.com/muety/wakapi/middlewares/logging.go:148.40,150.2 1 0
github.com/muety/wakapi/middlewares/logging.go:151.52,153.2 1 0
github.com/muety/wakapi/services/duration.go:16.78,22.2 2 1
github.com/muety/wakapi/services/duration.go:24.123,27.42 2 1
github.com/muety/wakapi/services/duration.go:33.2,34.16 2 1
github.com/muety/wakapi/services/duration.go:41.2,46.31 4 1
github.com/muety/wakapi/services/duration.go:81.2,83.31 2 1
github.com/muety/wakapi/services/duration.go:96.2,96.49 1 1
github.com/muety/wakapi/services/duration.go:100.2,100.32 1 1
github.com/muety/wakapi/services/duration.go:27.42,28.90 1 1
github.com/muety/wakapi/services/duration.go:28.90,30.4 1 1
github.com/muety/wakapi/services/duration.go:34.16,36.3 1 0
github.com/muety/wakapi/services/duration.go:46.31,47.42 1 1
github.com/muety/wakapi/services/duration.go:51.3,53.62 2 1
github.com/muety/wakapi/services/duration.go:57.3,57.20 1 1
github.com/muety/wakapi/services/duration.go:62.3,63.35 2 1
github.com/muety/wakapi/services/duration.go:66.3,68.72 2 1
github.com/muety/wakapi/services/duration.go:78.3,78.10 1 1
github.com/muety/wakapi/services/duration.go:47.42,48.12 1 1
github.com/muety/wakapi/services/duration.go:53.62,55.4 1 1
github.com/muety/wakapi/services/duration.go:57.20,59.12 2 1
github.com/muety/wakapi/services/duration.go:63.35,65.4 1 1
github.com/muety/wakapi/services/duration.go:68.72,70.41 2 1
github.com/muety/wakapi/services/duration.go:73.4,73.15 1 1
github.com/muety/wakapi/services/duration.go:70.41,72.5 1 1
github.com/muety/wakapi/services/duration.go:74.9,76.4 1 1
github.com/muety/wakapi/services/duration.go:83.31,84.26 1 1
github.com/muety/wakapi/services/duration.go:84.26,89.23 1 1
github.com/muety/wakapi/services/duration.go:92.4,92.36 1 1
github.com/muety/wakapi/services/duration.go:89.23,91.5 1 1
github.com/muety/wakapi/services/duration.go:96.49,98.3 1 1
github.com/muety/wakapi/services/key_value.go:14.89,19.2 1 0
github.com/muety/wakapi/services/key_value.go:21.83,23.2 1 0
github.com/muety/wakapi/services/key_value.go:25.78,27.16 2 0
github.com/muety/wakapi/services/key_value.go:33.2,33.11 1 0
github.com/muety/wakapi/services/key_value.go:27.16,32.3 1 0
github.com/muety/wakapi/services/key_value.go:36.72,38.2 1 0
github.com/muety/wakapi/services/key_value.go:40.60,42.2 1 0
github.com/muety/wakapi/services/project_label.go:21.111,28.2 1 0
github.com/muety/wakapi/services/project_label.go:30.80,32.2 1 0
github.com/muety/wakapi/services/project_label.go:34.90,35.51 1 0
github.com/muety/wakapi/services/project_label.go:39.2,40.16 2 0
github.com/muety/wakapi/services/project_label.go:43.2,44.20 2 0
github.com/muety/wakapi/services/project_label.go:35.51,37.3 1 0
github.com/muety/wakapi/services/project_label.go:40.16,42.3 1 0
github.com/muety/wakapi/services/project_label.go:48.108,50.16 2 0
github.com/muety/wakapi/services/project_label.go:53.2,53.107 1 0
github.com/muety/wakapi/services/project_label.go:56.2,56.26 1 0
github.com/muety/wakapi/services/project_label.go:50.16,52.3 1 0
github.com/muety/wakapi/services/project_label.go:53.107,55.3 1 0
github.com/muety/wakapi/services/project_label.go:60.116,62.16 2 0
github.com/muety/wakapi/services/project_label.go:65.2,65.107 1 0
github.com/muety/wakapi/services/project_label.go:68.2,68.26 1 0
github.com/muety/wakapi/services/project_label.go:62.16,64.3 1 0
github.com/muety/wakapi/services/project_label.go:65.107,67.3 1 0
github.com/muety/wakapi/services/project_label.go:71.98,73.16 2 0
github.com/muety/wakapi/services/project_label.go:77.2,79.20 3 0
github.com/muety/wakapi/services/project_label.go:73.16,75.3 1 0
github.com/muety/wakapi/services/project_label.go:82.74,83.24 1 0
github.com/muety/wakapi/services/project_label.go:86.2,89.12 4 0
github.com/muety/wakapi/services/project_label.go:83.24,85.3 1 0
github.com/muety/wakapi/services/project_label.go:92.89,94.14 2 0
github.com/muety/wakapi/services/project_label.go:97.2,100.4 1 0
github.com/muety/wakapi/services/project_label.go:94.14,96.3 1 0
github.com/muety/wakapi/services/report.go:30.122,44.33 4 0
github.com/muety/wakapi/services/report.go:50.2,50.12 1 0
github.com/muety/wakapi/services/report.go:44.33,45.31 1 0
github.com/muety/wakapi/services/report.go:45.31,47.4 1 0
github.com/muety/wakapi/services/report.go:53.38,57.16 3 0
github.com/muety/wakapi/services/report.go:61.2,62.26 2 0
github.com/muety/wakapi/services/report.go:57.16,59.3 1 0
github.com/muety/wakapi/services/report.go:62.26,64.3 1 0
github.com/muety/wakapi/services/report.go:69.61,74.22 3 0
github.com/muety/wakapi/services/report.go:81.2,81.65 1 0
github.com/muety/wakapi/services/report.go:98.2,98.24 1 0
github.com/muety/wakapi/services/report.go:74.22,78.3 3 0
github.com/muety/wakapi/services/report.go:81.65,91.47 3 0
github.com/muety/wakapi/services/report.go:91.47,93.4 1 0
github.com/muety/wakapi/services/report.go:93.9,95.4 1 0
github.com/muety/wakapi/services/report.go:101.80,102.22 1 0
github.com/muety/wakapi/services/report.go:107.2,107.29 1 0
github.com/muety/wakapi/services/report.go:112.2,116.16 4 0
github.com/muety/wakapi/services/report.go:121.2,128.65 2 0
github.com/muety/wakapi/services/report.go:133.2,134.12 2 0
github.com/muety/wakapi/services/report.go:102.22,105.3 2 0
github.com/muety/wakapi/services/report.go:107.29,110.3 2 0
github.com/muety/wakapi/services/report.go:116.16,119.3 2 0
github.com/muety/wakapi/services/report.go:128.65,131.3 2 0
github.com/muety/wakapi/services/report.go:137.63,138.41 1 0
github.com/muety/wakapi/services/report.go:145.2,145.12 1 0
github.com/muety/wakapi/services/report.go:138.41,139.30 1 0
github.com/muety/wakapi/services/report.go:139.30,140.16 1 0
github.com/muety/wakapi/services/report.go:140.16,142.5 1 0
github.com/muety/wakapi/services/summary.go:29.189,41.33 3 1
github.com/muety/wakapi/services/summary.go:52.2,52.12 1 1
github.com/muety/wakapi/services/summary.go:41.33,42.31 1 1
@ -876,146 +954,112 @@ github.com/muety/wakapi/services/summary.go:462.3,462.24 1 1
github.com/muety/wakapi/services/summary.go:453.17,454.33 1 1
github.com/muety/wakapi/services/summary.go:454.33,456.5 1 1
github.com/muety/wakapi/services/summary.go:459.28,461.4 1 1
github.com/muety/wakapi/services/aggregation.go:29.142,37.2 1 0
github.com/muety/wakapi/services/aggregation.go:46.43,48.37 1 0
github.com/muety/wakapi/services/aggregation.go:52.2,54.19 3 0
github.com/muety/wakapi/services/aggregation.go:48.37,50.3 1 0
github.com/muety/wakapi/services/aggregation.go:57.67,58.47 1 0
github.com/muety/wakapi/services/aggregation.go:61.2,66.40 4 0
github.com/muety/wakapi/services/aggregation.go:70.2,70.50 1 0
github.com/muety/wakapi/services/aggregation.go:75.2,75.60 1 0
github.com/muety/wakapi/services/aggregation.go:81.2,81.35 1 0
github.com/muety/wakapi/services/aggregation.go:58.47,60.3 1 0
github.com/muety/wakapi/services/aggregation.go:66.40,68.3 1 0
github.com/muety/wakapi/services/aggregation.go:70.50,72.3 1 0
github.com/muety/wakapi/services/aggregation.go:75.60,79.3 3 0
github.com/muety/wakapi/services/aggregation.go:84.109,85.24 1 0
github.com/muety/wakapi/services/aggregation.go:85.24,86.116 1 0
github.com/muety/wakapi/services/aggregation.go:86.116,88.4 1 0
github.com/muety/wakapi/services/aggregation.go:88.9,91.4 2 0
github.com/muety/wakapi/services/aggregation.go:95.80,96.33 1 0
github.com/muety/wakapi/services/aggregation.go:96.33,97.60 1 0
github.com/muety/wakapi/services/aggregation.go:97.60,99.4 1 0
github.com/muety/wakapi/services/aggregation.go:103.100,107.59 3 0
github.com/muety/wakapi/services/aggregation.go:122.2,123.16 2 0
github.com/muety/wakapi/services/aggregation.go:129.2,130.16 2 0
github.com/muety/wakapi/services/aggregation.go:136.2,137.44 2 0
github.com/muety/wakapi/services/aggregation.go:142.2,142.41 1 0
github.com/muety/wakapi/services/aggregation.go:156.2,156.12 1 0
github.com/muety/wakapi/services/aggregation.go:107.59,110.3 2 0
github.com/muety/wakapi/services/aggregation.go:110.8,110.47 1 0
github.com/muety/wakapi/services/aggregation.go:110.47,112.30 2 0
github.com/muety/wakapi/services/aggregation.go:112.30,113.43 1 0
github.com/muety/wakapi/services/aggregation.go:113.43,115.5 1 0
github.com/muety/wakapi/services/aggregation.go:117.8,119.3 1 0
github.com/muety/wakapi/services/aggregation.go:123.16,126.3 2 0
github.com/muety/wakapi/services/aggregation.go:130.16,133.3 2 0
github.com/muety/wakapi/services/aggregation.go:137.44,139.3 1 0
github.com/muety/wakapi/services/aggregation.go:142.41,143.21 1 0
github.com/muety/wakapi/services/aggregation.go:143.21,147.4 1 0
github.com/muety/wakapi/services/aggregation.go:147.9,147.62 1 0
github.com/muety/wakapi/services/aggregation.go:147.62,151.4 1 0
github.com/muety/wakapi/services/aggregation.go:159.73,162.27 3 0
github.com/muety/wakapi/services/aggregation.go:167.2,167.27 1 0
github.com/muety/wakapi/services/aggregation.go:170.2,170.12 1 0
github.com/muety/wakapi/services/aggregation.go:162.27,163.39 1 0
github.com/muety/wakapi/services/aggregation.go:163.39,165.4 1 0
github.com/muety/wakapi/services/aggregation.go:167.27,169.3 1 0
github.com/muety/wakapi/services/aggregation.go:173.69,176.27 3 0
github.com/muety/wakapi/services/aggregation.go:176.27,178.3 1 0
github.com/muety/wakapi/services/aggregation.go:181.83,196.41 5 0
github.com/muety/wakapi/services/aggregation.go:196.41,206.3 3 0
github.com/muety/wakapi/services/aggregation.go:209.34,212.2 2 0
github.com/muety/wakapi/services/alias.go:18.77,23.2 1 1
github.com/muety/wakapi/services/alias.go:27.60,28.43 1 1
github.com/muety/wakapi/services/alias.go:31.2,31.14 1 1
github.com/muety/wakapi/services/alias.go:28.43,30.3 1 1
github.com/muety/wakapi/services/alias.go:34.62,36.16 2 1
github.com/muety/wakapi/services/alias.go:39.2,39.12 1 1
github.com/muety/wakapi/services/alias.go:36.16,38.3 1 1
github.com/muety/wakapi/services/alias.go:42.59,43.51 1 1
github.com/muety/wakapi/services/alias.go:43.51,45.3 1 0
github.com/muety/wakapi/services/alias.go:48.76,49.32 1 0
github.com/muety/wakapi/services/alias.go:52.2,52.49 1 0
github.com/muety/wakapi/services/alias.go:49.32,51.3 1 0
github.com/muety/wakapi/services/alias.go:52.49,54.3 1 0
github.com/muety/wakapi/services/alias.go:54.8,56.3 1 0
github.com/muety/wakapi/services/alias.go:59.102,60.38 1 0
github.com/muety/wakapi/services/alias.go:63.2,63.39 1 0
github.com/muety/wakapi/services/alias.go:60.38,62.3 1 0
github.com/muety/wakapi/services/alias.go:66.113,67.38 1 0
github.com/muety/wakapi/services/alias.go:70.2,70.39 1 0
github.com/muety/wakapi/services/alias.go:67.38,69.3 1 0
github.com/muety/wakapi/services/alias.go:73.108,74.32 1 1
github.com/muety/wakapi/services/alias.go:78.2,78.49 1 1
github.com/muety/wakapi/services/alias.go:86.2,86.19 1 1
github.com/muety/wakapi/services/alias.go:74.32,76.3 1 1
github.com/muety/wakapi/services/alias.go:78.49,79.47 1 1
github.com/muety/wakapi/services/alias.go:79.47,80.49 1 1
github.com/muety/wakapi/services/alias.go:80.49,82.5 1 1
github.com/muety/wakapi/services/alias.go:89.77,91.16 2 0
github.com/muety/wakapi/services/alias.go:95.2,99.20 3 0
github.com/muety/wakapi/services/alias.go:91.16,93.3 1 0
github.com/muety/wakapi/services/alias.go:102.60,103.24 1 0
github.com/muety/wakapi/services/alias.go:106.2,109.16 2 0
github.com/muety/wakapi/services/alias.go:113.2,115.12 2 0
github.com/muety/wakapi/services/alias.go:103.24,105.3 1 0
github.com/muety/wakapi/services/alias.go:109.16,111.3 1 0
github.com/muety/wakapi/services/alias.go:118.69,121.28 3 0
github.com/muety/wakapi/services/alias.go:129.2,132.16 2 0
github.com/muety/wakapi/services/alias.go:138.2,138.31 1 0
github.com/muety/wakapi/services/alias.go:142.2,142.12 1 0
github.com/muety/wakapi/services/alias.go:121.28,122.21 1 0
github.com/muety/wakapi/services/alias.go:125.3,126.16 2 0
github.com/muety/wakapi/services/alias.go:122.21,124.4 1 0
github.com/muety/wakapi/services/alias.go:132.16,133.29 1 0
github.com/muety/wakapi/services/alias.go:133.29,135.4 1 0
github.com/muety/wakapi/services/alias.go:138.31,140.3 1 0
github.com/muety/wakapi/services/alias.go:145.74,146.14 1 0
github.com/muety/wakapi/services/alias.go:146.14,147.57 1 0
github.com/muety/wakapi/services/alias.go:147.57,151.4 3 0
github.com/muety/wakapi/services/alias.go:152.8,153.57 1 0
github.com/muety/wakapi/services/alias.go:153.57,155.48 2 0
github.com/muety/wakapi/services/alias.go:160.4,160.52 1 0
github.com/muety/wakapi/services/alias.go:155.48,156.26 1 0
github.com/muety/wakapi/services/alias.go:156.26,158.6 1 0
github.com/muety/wakapi/services/alias.go:165.116,166.32 1 0
github.com/muety/wakapi/services/alias.go:169.2,169.49 1 0
github.com/muety/wakapi/services/alias.go:166.32,168.3 1 0
github.com/muety/wakapi/services/alias.go:169.49,171.47 2 0
github.com/muety/wakapi/services/alias.go:176.3,176.30 1 0
github.com/muety/wakapi/services/alias.go:171.47,172.16 1 0
github.com/muety/wakapi/services/alias.go:172.16,174.5 1 0
github.com/muety/wakapi/services/alias.go:177.8,179.3 1 0
github.com/muety/wakapi/services/duration.go:16.78,22.2 2 1
github.com/muety/wakapi/services/duration.go:24.123,27.42 2 1
github.com/muety/wakapi/services/duration.go:33.2,34.16 2 1
github.com/muety/wakapi/services/duration.go:41.2,46.31 4 1
github.com/muety/wakapi/services/duration.go:81.2,83.31 2 1
github.com/muety/wakapi/services/duration.go:96.2,96.49 1 1
github.com/muety/wakapi/services/duration.go:100.2,100.32 1 1
github.com/muety/wakapi/services/duration.go:27.42,28.90 1 1
github.com/muety/wakapi/services/duration.go:28.90,30.4 1 1
github.com/muety/wakapi/services/duration.go:34.16,36.3 1 0
github.com/muety/wakapi/services/duration.go:46.31,47.42 1 1
github.com/muety/wakapi/services/duration.go:51.3,53.62 2 1
github.com/muety/wakapi/services/duration.go:57.3,57.20 1 1
github.com/muety/wakapi/services/duration.go:62.3,63.35 2 1
github.com/muety/wakapi/services/duration.go:66.3,68.72 2 1
github.com/muety/wakapi/services/duration.go:78.3,78.10 1 1
github.com/muety/wakapi/services/duration.go:47.42,48.12 1 1
github.com/muety/wakapi/services/duration.go:53.62,55.4 1 1
github.com/muety/wakapi/services/duration.go:57.20,59.12 2 1
github.com/muety/wakapi/services/duration.go:63.35,65.4 1 1
github.com/muety/wakapi/services/duration.go:68.72,70.41 2 1
github.com/muety/wakapi/services/duration.go:73.4,73.15 1 1
github.com/muety/wakapi/services/duration.go:70.41,72.5 1 1
github.com/muety/wakapi/services/duration.go:74.9,76.4 1 1
github.com/muety/wakapi/services/duration.go:83.31,84.26 1 1
github.com/muety/wakapi/services/duration.go:84.26,89.23 1 1
github.com/muety/wakapi/services/duration.go:92.4,92.36 1 1
github.com/muety/wakapi/services/duration.go:89.23,91.5 1 1
github.com/muety/wakapi/services/duration.go:96.49,98.3 1 1
github.com/muety/wakapi/services/aggregation.go:30.142,38.2 1 0
github.com/muety/wakapi/services/aggregation.go:47.43,49.64 1 0
github.com/muety/wakapi/services/aggregation.go:53.2,55.19 3 0
github.com/muety/wakapi/services/aggregation.go:49.64,51.3 1 0
github.com/muety/wakapi/services/aggregation.go:58.77,59.47 1 0
github.com/muety/wakapi/services/aggregation.go:62.2,67.40 4 0
github.com/muety/wakapi/services/aggregation.go:71.2,71.50 1 0
github.com/muety/wakapi/services/aggregation.go:76.2,76.60 1 0
github.com/muety/wakapi/services/aggregation.go:82.2,82.35 1 0
github.com/muety/wakapi/services/aggregation.go:59.47,61.3 1 0
github.com/muety/wakapi/services/aggregation.go:67.40,69.3 1 0
github.com/muety/wakapi/services/aggregation.go:71.50,73.3 1 0
github.com/muety/wakapi/services/aggregation.go:76.60,80.3 3 0
github.com/muety/wakapi/services/aggregation.go:85.109,86.24 1 0
github.com/muety/wakapi/services/aggregation.go:86.24,87.116 1 0
github.com/muety/wakapi/services/aggregation.go:87.116,89.4 1 0
github.com/muety/wakapi/services/aggregation.go:89.9,92.4 2 0
github.com/muety/wakapi/services/aggregation.go:96.80,97.33 1 0
github.com/muety/wakapi/services/aggregation.go:97.33,98.60 1 0
github.com/muety/wakapi/services/aggregation.go:98.60,100.4 1 0
github.com/muety/wakapi/services/aggregation.go:104.110,109.16 3 0
github.com/muety/wakapi/services/aggregation.go:115.2,116.16 2 0
github.com/muety/wakapi/services/aggregation.go:122.2,123.44 2 0
github.com/muety/wakapi/services/aggregation.go:128.2,128.41 1 0
github.com/muety/wakapi/services/aggregation.go:146.2,146.12 1 0
github.com/muety/wakapi/services/aggregation.go:109.16,112.3 2 0
github.com/muety/wakapi/services/aggregation.go:116.16,119.3 2 0
github.com/muety/wakapi/services/aggregation.go:123.44,125.3 1 0
github.com/muety/wakapi/services/aggregation.go:128.41,129.71 1 0
github.com/muety/wakapi/services/aggregation.go:133.3,133.21 1 0
github.com/muety/wakapi/services/aggregation.go:129.71,130.12 1 0
github.com/muety/wakapi/services/aggregation.go:133.21,137.4 1 0
github.com/muety/wakapi/services/aggregation.go:137.9,137.62 1 0
github.com/muety/wakapi/services/aggregation.go:137.62,141.4 1 0
github.com/muety/wakapi/services/aggregation.go:149.83,152.27 3 0
github.com/muety/wakapi/services/aggregation.go:157.2,158.12 2 0
github.com/muety/wakapi/services/aggregation.go:152.27,153.34 1 0
github.com/muety/wakapi/services/aggregation.go:153.34,155.4 1 0
github.com/muety/wakapi/services/aggregation.go:161.79,164.27 3 0
github.com/muety/wakapi/services/aggregation.go:164.27,166.3 1 0
github.com/muety/wakapi/services/aggregation.go:169.83,184.41 5 0
github.com/muety/wakapi/services/aggregation.go:184.41,194.3 3 0
github.com/muety/wakapi/services/aggregation.go:197.34,200.2 2 0
github.com/muety/wakapi/services/alias.go:19.77,24.2 1 1
github.com/muety/wakapi/services/alias.go:28.60,29.43 1 1
github.com/muety/wakapi/services/alias.go:32.2,32.14 1 1
github.com/muety/wakapi/services/alias.go:29.43,31.3 1 1
github.com/muety/wakapi/services/alias.go:35.62,37.16 2 1
github.com/muety/wakapi/services/alias.go:40.2,40.12 1 1
github.com/muety/wakapi/services/alias.go:37.16,39.3 1 1
github.com/muety/wakapi/services/alias.go:43.59,44.51 1 1
github.com/muety/wakapi/services/alias.go:44.51,46.3 1 0
github.com/muety/wakapi/services/alias.go:49.76,50.32 1 0
github.com/muety/wakapi/services/alias.go:53.2,53.49 1 0
github.com/muety/wakapi/services/alias.go:50.32,52.3 1 0
github.com/muety/wakapi/services/alias.go:53.49,55.3 1 0
github.com/muety/wakapi/services/alias.go:55.8,57.3 1 0
github.com/muety/wakapi/services/alias.go:60.102,61.38 1 0
github.com/muety/wakapi/services/alias.go:64.2,64.39 1 0
github.com/muety/wakapi/services/alias.go:61.38,63.3 1 0
github.com/muety/wakapi/services/alias.go:67.113,68.38 1 0
github.com/muety/wakapi/services/alias.go:71.2,71.39 1 0
github.com/muety/wakapi/services/alias.go:68.38,70.3 1 0
github.com/muety/wakapi/services/alias.go:74.108,75.32 1 1
github.com/muety/wakapi/services/alias.go:79.2,79.49 1 1
github.com/muety/wakapi/services/alias.go:87.2,87.19 1 1
github.com/muety/wakapi/services/alias.go:75.32,77.3 1 1
github.com/muety/wakapi/services/alias.go:79.49,80.47 1 1
github.com/muety/wakapi/services/alias.go:80.47,81.49 1 1
github.com/muety/wakapi/services/alias.go:81.49,83.5 1 1
github.com/muety/wakapi/services/alias.go:90.77,92.16 2 0
github.com/muety/wakapi/services/alias.go:96.2,100.20 3 0
github.com/muety/wakapi/services/alias.go:92.16,94.3 1 0
github.com/muety/wakapi/services/alias.go:103.60,104.24 1 0
github.com/muety/wakapi/services/alias.go:107.2,110.16 2 0
github.com/muety/wakapi/services/alias.go:114.2,116.12 2 0
github.com/muety/wakapi/services/alias.go:104.24,106.3 1 0
github.com/muety/wakapi/services/alias.go:110.16,112.3 1 0
github.com/muety/wakapi/services/alias.go:119.69,123.28 3 0
github.com/muety/wakapi/services/alias.go:131.2,134.16 2 0
github.com/muety/wakapi/services/alias.go:140.2,140.31 1 0
github.com/muety/wakapi/services/alias.go:144.2,144.12 1 0
github.com/muety/wakapi/services/alias.go:123.28,124.21 1 0
github.com/muety/wakapi/services/alias.go:127.3,128.16 2 0
github.com/muety/wakapi/services/alias.go:124.21,126.4 1 0
github.com/muety/wakapi/services/alias.go:134.16,135.29 1 0
github.com/muety/wakapi/services/alias.go:135.29,137.4 1 0
github.com/muety/wakapi/services/alias.go:140.31,142.3 1 0
github.com/muety/wakapi/services/alias.go:147.74,148.14 1 0
github.com/muety/wakapi/services/alias.go:148.14,149.57 1 0
github.com/muety/wakapi/services/alias.go:149.57,153.4 3 0
github.com/muety/wakapi/services/alias.go:154.8,155.57 1 0
github.com/muety/wakapi/services/alias.go:155.57,157.48 2 0
github.com/muety/wakapi/services/alias.go:162.4,162.52 1 0
github.com/muety/wakapi/services/alias.go:157.48,158.26 1 0
github.com/muety/wakapi/services/alias.go:158.26,160.6 1 0
github.com/muety/wakapi/services/alias.go:167.116,168.32 1 0
github.com/muety/wakapi/services/alias.go:171.2,171.49 1 0
github.com/muety/wakapi/services/alias.go:168.32,170.3 1 0
github.com/muety/wakapi/services/alias.go:171.49,173.47 2 0
github.com/muety/wakapi/services/alias.go:178.3,178.30 1 0
github.com/muety/wakapi/services/alias.go:173.47,174.16 1 0
github.com/muety/wakapi/services/alias.go:174.16,176.5 1 0
github.com/muety/wakapi/services/alias.go:179.8,181.3 1 0
github.com/muety/wakapi/services/diagnostics.go:14.101,19.2 1 0
github.com/muety/wakapi/services/diagnostics.go:21.101,23.2 1 0
github.com/muety/wakapi/services/heartbeat.go:26.141,40.33 3 0
github.com/muety/wakapi/services/heartbeat.go:48.2,48.12 1 0
github.com/muety/wakapi/services/heartbeat.go:40.33,41.31 1 0
@ -1024,9 +1068,9 @@ github.com/muety/wakapi/services/heartbeat.go:51.72,54.2 2 0
github.com/muety/wakapi/services/heartbeat.go:56.80,61.32 3 0
github.com/muety/wakapi/services/heartbeat.go:69.2,70.16 2 0
github.com/muety/wakapi/services/heartbeat.go:73.2,73.12 1 0
github.com/muety/wakapi/services/heartbeat.go:61.32,62.36 1 0
github.com/muety/wakapi/services/heartbeat.go:61.32,62.31 1 0
github.com/muety/wakapi/services/heartbeat.go:66.3,66.46 1 0
github.com/muety/wakapi/services/heartbeat.go:62.36,65.4 2 0
github.com/muety/wakapi/services/heartbeat.go:62.31,65.4 2 0
github.com/muety/wakapi/services/heartbeat.go:70.16,72.3 1 0
github.com/muety/wakapi/services/heartbeat.go:76.69,78.8 2 0
github.com/muety/wakapi/services/heartbeat.go:81.2,82.16 2 0
@ -1073,8 +1117,8 @@ github.com/muety/wakapi/services/heartbeat.go:193.16,195.3 1 0
github.com/muety/wakapi/services/heartbeat.go:197.28,199.3 1 0
github.com/muety/wakapi/services/heartbeat.go:204.96,206.2 1 0
github.com/muety/wakapi/services/heartbeat.go:208.107,210.55 2 0
github.com/muety/wakapi/services/heartbeat.go:210.55,216.41 4 0
github.com/muety/wakapi/services/heartbeat.go:216.41,221.4 2 0
github.com/muety/wakapi/services/heartbeat.go:210.55,216.36 4 0
github.com/muety/wakapi/services/heartbeat.go:216.36,221.4 2 0
github.com/muety/wakapi/services/heartbeat.go:225.85,232.2 6 0
github.com/muety/wakapi/services/heartbeat.go:234.74,235.32 1 0
github.com/muety/wakapi/services/heartbeat.go:235.32,240.3 1 0
@ -1104,36 +1148,27 @@ github.com/muety/wakapi/services/language_mapping.go:66.82,67.26 1 0
github.com/muety/wakapi/services/language_mapping.go:70.2,72.12 3 0
github.com/muety/wakapi/services/language_mapping.go:67.26,69.3 1 0
github.com/muety/wakapi/services/language_mapping.go:75.74,78.2 1 0
github.com/muety/wakapi/services/project_label.go:20.111,27.2 1 0
github.com/muety/wakapi/services/project_label.go:29.80,31.2 1 0
github.com/muety/wakapi/services/project_label.go:33.90,34.51 1 0
github.com/muety/wakapi/services/project_label.go:38.2,39.16 2 0
github.com/muety/wakapi/services/project_label.go:42.2,43.20 2 0
github.com/muety/wakapi/services/project_label.go:34.51,36.3 1 0
github.com/muety/wakapi/services/project_label.go:39.16,41.3 1 0
github.com/muety/wakapi/services/project_label.go:47.108,50.16 3 0
github.com/muety/wakapi/services/project_label.go:54.2,54.31 1 0
github.com/muety/wakapi/services/project_label.go:61.2,61.29 1 0
github.com/muety/wakapi/services/project_label.go:50.16,52.3 1 0
github.com/muety/wakapi/services/project_label.go:54.31,55.50 1 0
github.com/muety/wakapi/services/project_label.go:55.50,57.4 1 0
github.com/muety/wakapi/services/project_label.go:57.9,59.4 1 0
github.com/muety/wakapi/services/project_label.go:65.116,68.16 3 0
github.com/muety/wakapi/services/project_label.go:72.2,72.31 1 0
github.com/muety/wakapi/services/project_label.go:79.2,79.29 1 0
github.com/muety/wakapi/services/project_label.go:68.16,70.3 1 0
github.com/muety/wakapi/services/project_label.go:72.31,73.45 1 0
github.com/muety/wakapi/services/project_label.go:73.45,75.4 1 0
github.com/muety/wakapi/services/project_label.go:75.9,77.4 1 0
github.com/muety/wakapi/services/project_label.go:82.98,84.16 2 0
github.com/muety/wakapi/services/project_label.go:88.2,90.20 3 0
github.com/muety/wakapi/services/project_label.go:84.16,86.3 1 0
github.com/muety/wakapi/services/project_label.go:93.74,94.24 1 0
github.com/muety/wakapi/services/project_label.go:97.2,100.12 4 0
github.com/muety/wakapi/services/project_label.go:94.24,96.3 1 0
github.com/muety/wakapi/services/project_label.go:103.89,105.14 2 0
github.com/muety/wakapi/services/project_label.go:108.2,111.4 1 0
github.com/muety/wakapi/services/project_label.go:105.14,107.3 1 0
github.com/muety/wakapi/services/misc.go:21.126,28.2 1 0
github.com/muety/wakapi/services/misc.go:40.50,42.48 1 0
github.com/muety/wakapi/services/misc.go:46.2,48.19 3 0
github.com/muety/wakapi/services/misc.go:42.48,44.3 1 0
github.com/muety/wakapi/services/misc.go:51.51,53.16 2 0
github.com/muety/wakapi/services/misc.go:57.2,60.26 3 0
github.com/muety/wakapi/services/misc.go:66.2,68.40 2 0
github.com/muety/wakapi/services/misc.go:73.2,75.33 3 0
github.com/muety/wakapi/services/misc.go:79.2,84.17 2 0
github.com/muety/wakapi/services/misc.go:88.2,91.17 1 0
github.com/muety/wakapi/services/misc.go:95.2,95.12 1 0
github.com/muety/wakapi/services/misc.go:53.16,55.3 1 0
github.com/muety/wakapi/services/misc.go:60.26,65.3 1 0
github.com/muety/wakapi/services/misc.go:68.40,70.3 1 0
github.com/muety/wakapi/services/misc.go:75.33,78.3 2 0
github.com/muety/wakapi/services/misc.go:84.17,86.3 1 0
github.com/muety/wakapi/services/misc.go:91.17,93.3 1 0
github.com/muety/wakapi/services/misc.go:98.116,99.24 1 0
github.com/muety/wakapi/services/misc.go:99.24,100.156 1 0
github.com/muety/wakapi/services/misc.go:100.156,102.4 1 0
github.com/muety/wakapi/services/misc.go:102.9,107.4 1 0
github.com/muety/wakapi/services/user.go:24.99,34.33 3 0
github.com/muety/wakapi/services/user.go:55.2,55.12 1 0
github.com/muety/wakapi/services/user.go:34.33,35.31 1 0
@ -1185,62 +1220,3 @@ github.com/muety/wakapi/services/user.go:184.85,186.2 1 0
github.com/muety/wakapi/services/user.go:188.57,195.2 4 0
github.com/muety/wakapi/services/user.go:197.38,199.2 1 0
github.com/muety/wakapi/services/user.go:201.57,206.2 1 0
github.com/muety/wakapi/services/diagnostics.go:14.101,19.2 1 0
github.com/muety/wakapi/services/diagnostics.go:21.101,23.2 1 0
github.com/muety/wakapi/services/key_value.go:14.89,19.2 1 0
github.com/muety/wakapi/services/key_value.go:21.83,23.2 1 0
github.com/muety/wakapi/services/key_value.go:25.78,27.16 2 0
github.com/muety/wakapi/services/key_value.go:33.2,33.11 1 0
github.com/muety/wakapi/services/key_value.go:27.16,32.3 1 0
github.com/muety/wakapi/services/key_value.go:36.72,38.2 1 0
github.com/muety/wakapi/services/key_value.go:40.60,42.2 1 0
github.com/muety/wakapi/services/misc.go:21.126,28.2 1 0
github.com/muety/wakapi/services/misc.go:40.50,42.48 1 0
github.com/muety/wakapi/services/misc.go:46.2,48.19 3 0
github.com/muety/wakapi/services/misc.go:42.48,44.3 1 0
github.com/muety/wakapi/services/misc.go:51.51,53.16 2 0
github.com/muety/wakapi/services/misc.go:57.2,60.26 3 0
github.com/muety/wakapi/services/misc.go:66.2,68.40 2 0
github.com/muety/wakapi/services/misc.go:73.2,75.33 3 0
github.com/muety/wakapi/services/misc.go:79.2,84.17 2 0
github.com/muety/wakapi/services/misc.go:88.2,91.17 1 0
github.com/muety/wakapi/services/misc.go:95.2,95.12 1 0
github.com/muety/wakapi/services/misc.go:53.16,55.3 1 0
github.com/muety/wakapi/services/misc.go:60.26,65.3 1 0
github.com/muety/wakapi/services/misc.go:68.40,70.3 1 0
github.com/muety/wakapi/services/misc.go:75.33,78.3 2 0
github.com/muety/wakapi/services/misc.go:84.17,86.3 1 0
github.com/muety/wakapi/services/misc.go:91.17,93.3 1 0
github.com/muety/wakapi/services/misc.go:98.116,99.24 1 0
github.com/muety/wakapi/services/misc.go:99.24,100.156 1 0
github.com/muety/wakapi/services/misc.go:100.156,102.4 1 0
github.com/muety/wakapi/services/misc.go:102.9,107.4 1 0
github.com/muety/wakapi/services/report.go:30.122,44.33 4 0
github.com/muety/wakapi/services/report.go:50.2,50.12 1 0
github.com/muety/wakapi/services/report.go:44.33,45.31 1 0
github.com/muety/wakapi/services/report.go:45.31,47.4 1 0
github.com/muety/wakapi/services/report.go:53.38,57.16 3 0
github.com/muety/wakapi/services/report.go:61.2,62.26 2 0
github.com/muety/wakapi/services/report.go:57.16,59.3 1 0
github.com/muety/wakapi/services/report.go:62.26,64.3 1 0
github.com/muety/wakapi/services/report.go:69.61,74.22 3 0
github.com/muety/wakapi/services/report.go:81.2,81.65 1 0
github.com/muety/wakapi/services/report.go:98.2,98.24 1 0
github.com/muety/wakapi/services/report.go:74.22,78.3 3 0
github.com/muety/wakapi/services/report.go:81.65,91.47 3 0
github.com/muety/wakapi/services/report.go:91.47,93.4 1 0
github.com/muety/wakapi/services/report.go:93.9,95.4 1 0
github.com/muety/wakapi/services/report.go:101.80,102.22 1 0
github.com/muety/wakapi/services/report.go:107.2,107.29 1 0
github.com/muety/wakapi/services/report.go:112.2,116.16 4 0
github.com/muety/wakapi/services/report.go:121.2,128.65 2 0
github.com/muety/wakapi/services/report.go:133.2,134.12 2 0
github.com/muety/wakapi/services/report.go:102.22,105.3 2 0
github.com/muety/wakapi/services/report.go:107.29,110.3 2 0
github.com/muety/wakapi/services/report.go:116.16,119.3 2 0
github.com/muety/wakapi/services/report.go:128.65,131.3 2 0
github.com/muety/wakapi/services/report.go:137.63,138.41 1 0
github.com/muety/wakapi/services/report.go:145.2,145.12 1 0
github.com/muety/wakapi/services/report.go:138.41,139.30 1 0
github.com/muety/wakapi/services/report.go:139.30,140.16 1 0
github.com/muety/wakapi/services/report.go:140.16,142.5 1 0

60
go.mod
View File

@ -1,51 +1,73 @@
module github.com/muety/wakapi
go 1.16
go 1.18
require (
codeberg.org/Codeberg/avatars v0.0.0-20211228163022-8da63012fe69
github.com/BurntSushi/toml v1.0.0 // indirect
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751
github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect
github.com/duke-git/lancet/v2 v2.0.0
github.com/emersion/go-sasl v0.0.0-20211008083017-0b9dcfb154ac
github.com/emersion/go-smtp v0.15.0
github.com/emvi/logbuch v1.2.0
github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072 // indirect
github.com/felixge/httpsnoop v1.0.2 // indirect
github.com/getsentry/sentry-go v0.13.0
github.com/go-co-op/gocron v1.13.0
github.com/go-openapi/spec v0.20.2 // indirect
github.com/gorilla/handlers v1.5.1
github.com/gorilla/mux v1.8.0
github.com/gorilla/schema v1.2.0
github.com/gorilla/securecookie v1.1.1
github.com/hashicorp/golang-lru v0.5.4
github.com/jackc/pgx/v4 v4.15.0 // indirect
github.com/jinzhu/configor v1.2.1
github.com/jinzhu/now v1.1.5 // indirect
github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 // indirect
github.com/kevinpollet/nego v0.0.0-20211010160919-a65cd48cee43 // indirect
github.com/leandro-lugaresi/hub v1.1.1
github.com/lpar/gzipped/v2 v2.0.2
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-sqlite3 v2.0.3+incompatible // indirect
github.com/mitchellh/hashstructure/v2 v2.0.2
github.com/onsi/ginkgo v1.10.3 // indirect
github.com/onsi/gomega v1.7.1 // indirect
github.com/patrickmn/go-cache v2.1.0+incompatible
github.com/samber/lo v1.11.0
github.com/satori/go.uuid v1.2.0
github.com/stretchr/testify v1.7.0
github.com/swaggo/swag v1.7.0
github.com/yudai/pp v2.0.1+incompatible // indirect
go.uber.org/atomic v1.9.0
golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 // indirect
golang.org/x/tools v0.1.0 // indirect
gopkg.in/go-playground/assert.v1 v1.2.1 // indirect
gopkg.in/go-playground/validator.v8 v8.18.2 // indirect
gorm.io/driver/mysql v1.3.2
gorm.io/driver/postgres v1.3.1
gorm.io/driver/sqlite v1.3.1
gorm.io/gorm v1.23.4-0.20220320010245-2d5cb997ed4d
)
require (
github.com/BurntSushi/toml v1.0.0 // indirect
github.com/KyleBanks/depth v1.2.1 // indirect
github.com/PuerkitoBio/purell v1.1.1 // indirect
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/felixge/httpsnoop v1.0.2 // indirect
github.com/go-openapi/jsonpointer v0.19.5 // indirect
github.com/go-openapi/jsonreference v0.19.5 // indirect
github.com/go-openapi/spec v0.20.2 // indirect
github.com/go-openapi/swag v0.19.13 // indirect
github.com/go-sql-driver/mysql v1.6.0 // indirect
github.com/jackc/chunkreader/v2 v2.0.1 // indirect
github.com/jackc/pgconn v1.11.0 // indirect
github.com/jackc/pgio v1.0.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgproto3/v2 v2.2.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect
github.com/jackc/pgtype v1.10.0 // indirect
github.com/jackc/pgx/v4 v4.15.0 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/kevinpollet/nego v0.0.0-20211010160919-a65cd48cee43 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-sqlite3 v2.0.3+incompatible // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/robfig/cron/v3 v3.0.1 // indirect
github.com/stretchr/objx v0.2.0 // indirect
golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 // indirect
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/tools v0.1.8-0.20211029000441-d6a9af8af023 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
)

210
go.sum
View File

@ -1,14 +1,8 @@
codeberg.org/Codeberg/avatars v0.0.0-20211228163022-8da63012fe69 h1:/XvI42KX57UTpeIOIt7IfM+pmEFTL8FGtiIUGcGDOIU=
codeberg.org/Codeberg/avatars v0.0.0-20211228163022-8da63012fe69/go.mod h1:ML/htpPRb3+owhkm4+qG2ZrXnk5WXaQLASOZ5GLCPi8=
github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v0.4.1 h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw=
github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/toml v1.0.0 h1:dtDWrepsVPfW9H/4y7dDgFc2MBUSeJhlaDtK13CxFlU=
github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno=
github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo=
github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY=
github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
@ -17,32 +11,20 @@ github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tN
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0=
github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g=
github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I=
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM=
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
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.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM=
github.com/duke-git/lancet/v2 v2.0.0 h1:xQ64IXUVwE4TUjYQ7QJPOBJc1ycKcD52aAKeKSOIO1U=
github.com/duke-git/lancet/v2 v2.0.0/go.mod h1:5Nawyf/bK783rCiHyVkZLx+jj8028oVVjLOrC21ZONA=
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21/go.mod h1:iL2twTeMvZnrg54ZoPDNfJaJaqy0xIQFuBdrLsmspwQ=
github.com/emersion/go-sasl v0.0.0-20211008083017-0b9dcfb154ac h1:tn/OQ2PmwQ0XFVgAHfjlLyqMewry25Rz7jWnVoh4Ggs=
github.com/emersion/go-sasl v0.0.0-20211008083017-0b9dcfb154ac/go.mod h1:iL2twTeMvZnrg54ZoPDNfJaJaqy0xIQFuBdrLsmspwQ=
@ -50,33 +32,17 @@ github.com/emersion/go-smtp v0.15.0 h1:3+hMGMGrqP/lqd7qoxZc1hTU8LY8gHV9RFGWlqSDm
github.com/emersion/go-smtp v0.15.0/go.mod h1:qm27SGYgoIPRot6ubfQ/GpiPy/g3PaZAVRxiO/sDUgQ=
github.com/emvi/logbuch v1.2.0 h1:Bw0jQH1Dbs+oIygZBNx/2Ub1igXRFtKQrIMRrZdVFJM=
github.com/emvi/logbuch v1.2.0/go.mod h1:hFxe0XQOFl76SkE/f0Pt5oQbXRZtyGa8EroBrrbQHuc=
github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw=
github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8=
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o=
github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc=
github.com/getsentry/sentry-go v0.11.0 h1:qro8uttJGvNAMr5CLcFI9CHR0aDzXl0Vs3Pmw/oTPg8=
github.com/getsentry/sentry-go v0.11.0/go.mod h1:KBQIxiZAetw62Cj8Ri964vAEWVdgfaUCn30Q3bCvANo=
github.com/getsentry/sentry-go v0.13.0 h1:20dgTiUSfxRB/EhMPtxcL9ZEbM1ZdR+W/7f7NWD+xWo=
github.com/getsentry/sentry-go v0.13.0/go.mod h1:EOsfu5ZdvKPfeHYV6pTVQnsjfp30+XA7//UooKNumH0=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM=
github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98=
github.com/go-co-op/gocron v1.11.0 h1:ujOMubCpGcTxnnR/9vJIPIEpgwuAjbueAYqJRNr+nHg=
github.com/go-co-op/gocron v1.11.0/go.mod h1:qtlsoMpHlSdIZ3E/xuZzrrAbeX3u5JtPvWf2TcdutU0=
github.com/go-co-op/gocron v1.13.0 h1:BjkuNImPy5NuIPEifhWItFG7pYyr27cyjS6BN9w/D4c=
github.com/go-co-op/gocron v1.13.0/go.mod h1:GD5EIEly1YNW+LovFVx5dzbYVcIc8544K99D8UVRpGo=
github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w=
github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8=
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
@ -90,29 +56,13 @@ github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh
github.com/go-openapi/swag v0.19.11/go.mod h1:Uc0gKkdR+ojzsEpjh39QChyu92vPgIr72POcgHMAgSY=
github.com/go-openapi/swag v0.19.13 h1:233UVgMy1DlmCYYfOiFpta6e2urloh+sEs5id6lyzog=
github.com/go-openapi/swag v0.19.13/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo=
github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM=
github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw=
github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4=
github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q=
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
@ -121,20 +71,8 @@ github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc=
github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU=
github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ=
github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI=
github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0=
github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk=
github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g=
github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw=
github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0=
github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo=
github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8=
@ -145,7 +83,6 @@ github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsU
github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o=
github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY=
github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI=
github.com/jackc/pgconn v1.10.1 h1:DzdIHIjG1AxGwoEEqS+mGsURyjt4enSmqzACXvVzOT8=
github.com/jackc/pgconn v1.10.1/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI=
github.com/jackc/pgconn v1.11.0 h1:HiHArx4yFbwl91X3qqIHtUFoiIfLNJXCQRsnzkiwwaQ=
github.com/jackc/pgconn v1.11.0/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI=
@ -157,7 +94,6 @@ github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5W
github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgproto3 v1.1.0 h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A=
github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78=
github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA=
github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg=
@ -173,8 +109,6 @@ github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01C
github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc=
github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw=
github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM=
github.com/jackc/pgtype v1.9.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4=
github.com/jackc/pgtype v1.9.1 h1:MJc2s0MFS8C3ok1wQTdQxWuXQcB6+HwAm5x1CzW7mf0=
github.com/jackc/pgtype v1.9.1/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4=
github.com/jackc/pgtype v1.10.0 h1:ILnBWrRMSXGczYvmkYD6PsYyVFUNLTnIUJHHDLmqk38=
github.com/jackc/pgtype v1.10.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4=
@ -182,8 +116,6 @@ github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08
github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM=
github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc=
github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs=
github.com/jackc/pgx/v4 v4.14.0/go.mod h1:jT3ibf/A0ZVCp89rtCIN0zCJxcE74ypROmHEZYsG/j8=
github.com/jackc/pgx/v4 v4.14.1 h1:71oo1KAGI6mXhLiTMn6iDFcp3e7+zon/capWjl2OEFU=
github.com/jackc/pgx/v4 v4.14.1/go.mod h1:RgDuE4Z34o7XE92RpLsvFiOEfrAUT0Xt2KxvX73W06M=
github.com/jackc/pgx/v4 v4.15.0 h1:B7dTkXsdILD3MF987WGGCcg+tvLW6bZJdEcqVFeU//w=
github.com/jackc/pgx/v4 v4.15.0/go.mod h1:D/zyOyXiaM1TmVWnOM18p0xdDtdakRBa0RsVGI3U3bw=
@ -196,31 +128,15 @@ github.com/jinzhu/configor v1.2.1 h1:OKk9dsR8i6HPOCZR8BcMtcEImAFjIhbJFZNyn5GCZko
github.com/jinzhu/configor v1.2.1/go.mod h1:nX89/MOmDba7ZX7GCyU/VIaQ2Ar2aizBl2d3JLF/rDc=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.2/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jinzhu/now v1.1.3/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jinzhu/now v1.1.4 h1:tHnRBy1i5F2Dh8BAFxqFzxKqqvezXrL2OW1TnX+Mlas=
github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
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/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k=
github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8=
github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE=
github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE=
github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro=
github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8=
github.com/kevinpollet/nego v0.0.0-20200324111829-b3061ca9dd9d h1:BaIpmhcqpBnz4+NZjUjVGxKNA+/E7ovKsjmwqjXcGYc=
github.com/kevinpollet/nego v0.0.0-20200324111829-b3061ca9dd9d/go.mod h1:3FSWkzk9h42opyV0o357Fq6gsLF/A6MI/qOca9kKobY=
github.com/kevinpollet/nego v0.0.0-20211010160919-a65cd48cee43 h1:Pdirg1gwhEcGjMLyuSxGn9664p+P8J9SrfMgpFwrDyg=
github.com/kevinpollet/nego v0.0.0-20211010160919-a65cd48cee43/go.mod h1:ahLMuLCUyDdXqtqGyuwGev7/PGtO7r7ocvdwDuEN/3E=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
@ -229,12 +145,8 @@ github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
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/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g=
github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y=
github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k=
github.com/leandro-lugaresi/hub v1.1.1 h1:zqp0HzFvj4HtqjMBXM2QF17o6PNmR8MJOChgeKl/aw8=
github.com/leandro-lugaresi/hub v1.1.1/go.mod h1:XEFWanhHv6Rt3XlteHMxuNDYi8dJcpJjodpqkU+BtIo=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
@ -242,52 +154,26 @@ github.com/lib/pq v1.10.2 h1:AqzbZs4ZoCBp+GtejcpCpcxM3zlSMx29dXbUSeVtJb8=
github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/lpar/gzipped/v2 v2.0.2 h1:y7FjyTH07f8dX0YQ5o0sg2DTbRnmS3oT1pUvxViQ//o=
github.com/lpar/gzipped/v2 v2.0.2/go.mod h1:qb7pLOGFgqz5w9xGGiiRFPxuGZ7GqWEuXUKXSbgonkQ=
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
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.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-sqlite3 v1.14.9/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U=
github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw=
github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8=
github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4=
github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ=
github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w=
github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@ -298,27 +184,17 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU=
github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc=
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/samber/lo v1.11.0 h1:JfeYozXL1xfkhRUFOfH13ociyeiLSC/GRJjGKI668xM=
github.com/samber/lo v1.11.0/go.mod h1:2I7tgIv8Q1SG2xEIkRq0F2i2zgxVpnyPOP0d3Gj2r+A=
github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=
@ -332,25 +208,8 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/swaggo/swag v1.7.0 h1:5bCA/MTLQoIqDXXyHfOpMeDvL9j68OY/udlK4pQoo4E=
github.com/swaggo/swag v1.7.0/go.mod h1:BdPIL73gvS9NBsdi7M1JOxLvlbfvNRaBP8m6WT6Aajo=
github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M=
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w=
github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio=
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI=
github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg=
github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM=
github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
@ -366,77 +225,53 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E
go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20211209193657-4570a0811e8b h1:QAqMVf3pSa6eeTsuklijukjXBlj7Es2QQplab+/RbQ4=
golang.org/x/crypto v0.0.0-20211209193657-4570a0811e8b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd h1:XcWmESyNjXJMLahc3mqVQJcgSTDxFxhETVlfk9uGc38=
golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM=
golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/mod v0.6.0-dev.0.20211013180041-c96bc1413d57 h1:LQmS1nU0twXLA96Kt7U9qtHJEbBk3z6Q0V4UXjZkpr4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 h1:OH54vjqzRWmbJ62fjuhxy7AxFFgoHN0/DPc/UrL8cAs=
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
@ -449,12 +284,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
@ -463,13 +294,12 @@ golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20201120155355-20be4ac4bd6e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.8-0.20211029000441-d6a9af8af023 h1:0c3L82FDQ5rt1bjTBlchS8t6RQ6299/+5bWMnRLh+uI=
golang.org/x/tools v0.1.8-0.20211029000441-d6a9af8af023/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@ -477,43 +307,23 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y=
gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s=
gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/mysql v1.2.1 h1:h+3f1l9Ng2C072Y2tIiLgPpWN78r1KXL7bHJ0nTjlhU=
gorm.io/driver/mysql v1.2.1/go.mod h1:qsiz+XcAyMrS6QY+X3M9R6b/lKM1imKmcuK9kac5LTo=
gorm.io/driver/mysql v1.3.2 h1:QJryWiqQ91EvZ0jZL48NOpdlPdMjdip1hQ8bTgo4H7I=
gorm.io/driver/mysql v1.3.2/go.mod h1:ChK6AHbHgDCFZyJp0F+BmVGb06PSIoh9uVYKAlRbb2U=
gorm.io/driver/postgres v1.2.3 h1:f4t0TmNMy9gh3TU2PX+EppoA6YsgFnyq8Ojtddb42To=
gorm.io/driver/postgres v1.2.3/go.mod h1:pJV6RgYQPG47aM1f0QeOzFH9HxQc8JcmAgjRCgS0wjs=
gorm.io/driver/postgres v1.3.1 h1:Pyv+gg1Gq1IgsLYytj/S2k7ebII3CzEdpqQkPOdH24g=
gorm.io/driver/postgres v1.3.1/go.mod h1:WwvWOuR9unCLpGWCL6Y3JOeBWvbKi6JLhayiVclSZZU=
gorm.io/driver/sqlite v1.2.6 h1:SStaH/b+280M7C8vXeZLz/zo9cLQmIGwwj3cSj7p6l4=
gorm.io/driver/sqlite v1.2.6/go.mod h1:gyoX0vHiiwi0g49tv+x2E7l8ksauLK0U/gShcdUsjWY=
gorm.io/driver/sqlite v1.3.1 h1:bwfE+zTEWklBYoEodIOIBwuWHpnx52Z9zJFW5F33WLk=
gorm.io/driver/sqlite v1.3.1/go.mod h1:wJx0hJspfycZ6myN38x1O/AqLtNS6c5o9TndewFbELg=
gorm.io/gorm v1.22.3/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0=
gorm.io/gorm v1.22.4 h1:8aPcyEJhY0MAt8aY6Dc524Pn+pO29K+ydu+e/cXSpQM=
gorm.io/gorm v1.22.4/go.mod h1:1aeVC+pe9ZmvKZban/gW4QPra7PRoTEssyc922qCAkk=
gorm.io/gorm v1.23.1/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
gorm.io/gorm v1.23.3 h1:jYh3nm7uLZkrMVfA8WVNjDZryKfr7W+HTlInVgKFJAg=
gorm.io/gorm v1.23.3/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
gorm.io/gorm v1.23.4-0.20220320010245-2d5cb997ed4d h1:jDg/QfjT3PwXwVbUdArbL4dlayfD/zE1tC04Zx+BAcI=
gorm.io/gorm v1.23.4-0.20220320010245-2d5cb997ed4d/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=

View File

@ -3,8 +3,8 @@ package v1
// https://wakatime.com/api/v1/users/current/machine_names
type MachineViewModel struct {
Data []*MachineEntry `json:"data"`
TotalPages int `json:"total_pages"`
Data []*MachineEntry `json:"data"`
TotalPages int `json:"total_pages"`
}
type MachineEntry struct {

View File

@ -1,8 +1,8 @@
package v1
type UserAgentsViewModel struct {
Data []*UserAgentEntry `json:"data"`
TotalPages int `json:"total_pages"`
Data []*UserAgentEntry `json:"data"`
TotalPages int `json:"total_pages"`
}
type UserAgentEntry struct {

View File

@ -1,6 +1,7 @@
package utils
import (
datastructure "github.com/duke-git/lancet/v2/datastructure/set"
"github.com/muety/wakapi/models"
"github.com/muety/wakapi/services"
"sort"
@ -12,42 +13,28 @@ import (
// -> Instead, the "virtual" project "AB" shall appear
// See https://github.com/muety/wakapi/issues/231
func GetEffectiveProjectsList(user *models.User, heartbeatSrvc services.IHeartbeatService, aliasSrvc services.IAliasService) ([]string, error) {
projectsMap := make(map[string]bool) // proper sets as part of stdlib would be nice...
// extract actual projects from heartbeats
realProjects, err := heartbeatSrvc.GetEntitySetByUser(models.SummaryProject, user)
if err != nil {
return []string{}, err
}
// create a "set" / lookup table
for _, p := range realProjects {
projectsMap[p] = true
}
// fetch aliases
projectAliases, err := aliasSrvc.GetByUserAndType(user.ID, models.SummaryProject)
if err != nil {
return []string{}, err
}
projects := datastructure.NewSet[string](realProjects...)
// remove alias values (source of a mapping)
// add alias key (target of a mapping) instead
for _, a := range projectAliases {
if projectsMap[a.Value] {
projectsMap[a.Value] = false
}
projectsMap[a.Key] = true
projects.Delete(a.Value)
projects.Add(a.Key)
}
projects := make([]string, 0, len(projectsMap))
for key, val := range projectsMap {
if !val {
continue
}
projects = append(projects, key)
}
sort.Strings(projects)
return projects, nil
sorted := projects.Values()
sort.Strings(sorted)
return sorted, nil
}

View File

@ -2,6 +2,7 @@ package services
import (
"errors"
datastructure "github.com/duke-git/lancet/v2/datastructure/set"
"github.com/emvi/logbuch"
"github.com/muety/wakapi/config"
"runtime"
@ -23,7 +24,7 @@ type AggregationService struct {
userService IUserService
summaryService ISummaryService
heartbeatService IHeartbeatService
inProgress map[string]bool
inProgress datastructure.Set[string]
}
func NewAggregationService(userService IUserService, summaryService ISummaryService, heartbeatService IHeartbeatService) *AggregationService {
@ -32,7 +33,7 @@ func NewAggregationService(userService IUserService, summaryService ISummaryServ
userService: userService,
summaryService: summaryService,
heartbeatService: heartbeatService,
inProgress: map[string]bool{},
inProgress: datastructure.NewSet[string](),
}
}
@ -45,16 +46,16 @@ type AggregationJob struct {
// Schedule a job to (re-)generate summaries every day shortly after midnight
func (srv *AggregationService) Schedule() {
// Run once initially
if err := srv.Run(nil); err != nil {
if err := srv.Run(datastructure.NewSet[string]()); err != nil {
logbuch.Fatal("failed to run AggregationJob: %v", err)
}
s := gocron.NewScheduler(time.Local)
s.Every(1).Day().At(srv.config.App.AggregationTime).Do(srv.Run, map[string]bool{})
s.Every(1).Day().At(srv.config.App.AggregationTime).Do(srv.Run, datastructure.NewSet[string]())
s.StartBlocking()
}
func (srv *AggregationService) Run(userIds map[string]bool) error {
func (srv *AggregationService) Run(userIds datastructure.Set[string]) error {
if err := srv.lockUsers(userIds); err != nil {
return err
}
@ -100,24 +101,9 @@ func (srv *AggregationService) persistWorker(summaries <-chan *models.Summary) {
}
}
func (srv *AggregationService) trigger(jobs chan<- *AggregationJob, userIds map[string]bool) error {
func (srv *AggregationService) trigger(jobs chan<- *AggregationJob, userIds datastructure.Set[string]) error {
logbuch.Info("generating summaries")
var users []*models.User
if allUsers, err := srv.userService.GetAll(); err != nil {
config.Log().Error(err.Error())
return err
} else if userIds != nil && len(userIds) > 0 {
users = make([]*models.User, 0)
for _, u := range allUsers {
if yes, ok := userIds[u.ID]; yes && ok {
users = append(users, u)
}
}
} else {
users = allUsers
}
// Get a map from user ids to the time of their latest summary or nil if none exists yet
lastUserSummaryTimes, err := srv.summaryService.GetLatestByUser()
if err != nil {
@ -140,6 +126,10 @@ func (srv *AggregationService) trigger(jobs chan<- *AggregationJob, userIds map[
// Generate summary aggregation jobs
for _, e := range lastUserSummaryTimes {
if userIds != nil && !userIds.IsEmpty() && !userIds.Contain(e.User) {
continue
}
if e.Time.Valid() {
// Case 1: User has aggregated summaries already
// -> Spawn jobs to create summaries from their latest aggregation to now
@ -156,25 +146,23 @@ func (srv *AggregationService) trigger(jobs chan<- *AggregationJob, userIds map[
return nil
}
func (srv *AggregationService) lockUsers(userIds map[string]bool) error {
func (srv *AggregationService) lockUsers(userIds datastructure.Set[string]) error {
aggregationLock.Lock()
defer aggregationLock.Unlock()
for uid := range userIds {
if _, ok := srv.inProgress[uid]; ok {
if srv.inProgress.Contain(uid) {
return errors.New("aggregation already in progress for at least of the request users")
}
}
for uid := range userIds {
srv.inProgress[uid] = true
}
srv.inProgress = srv.inProgress.Union(userIds)
return nil
}
func (srv *AggregationService) unlockUsers(userIds map[string]bool) {
func (srv *AggregationService) unlockUsers(userIds datastructure.Set[string]) {
aggregationLock.Lock()
defer aggregationLock.Unlock()
for uid := range userIds {
delete(srv.inProgress, uid)
srv.inProgress.Delete(uid)
}
}

View File

@ -3,6 +3,7 @@ package services
import (
"errors"
"fmt"
datastructure "github.com/duke-git/lancet/v2/datastructure/set"
"github.com/emvi/logbuch"
"github.com/muety/wakapi/config"
"github.com/muety/wakapi/models"
@ -117,12 +118,13 @@ func (srv *AliasService) Delete(alias *models.Alias) error {
func (srv *AliasService) DeleteMulti(aliases []*models.Alias) error {
ids := make([]uint, len(aliases))
affectedUsers := make(map[string]bool)
affectedUsers := datastructure.NewSet[string]()
for i, a := range aliases {
if a.UserID == "" {
return errors.New("no user id specified")
}
affectedUsers[a.UserID] = true
affectedUsers.Add(a.UserID)
ids[i] = a.ID
}

View File

@ -2,10 +2,10 @@ package services
import (
"fmt"
datastructure "github.com/duke-git/lancet/v2/datastructure/set"
"github.com/leandro-lugaresi/hub"
"github.com/muety/wakapi/config"
"github.com/muety/wakapi/repositories"
"github.com/muety/wakapi/utils"
"github.com/patrickmn/go-cache"
"strings"
"sync"
@ -54,14 +54,14 @@ func (srv *HeartbeatService) Insert(heartbeat *models.Heartbeat) error {
}
func (srv *HeartbeatService) InsertBatch(heartbeats []*models.Heartbeat) error {
hashes := make(map[string]bool)
hashes := datastructure.NewSet[string]()
// https://github.com/muety/wakapi/issues/139
filteredHeartbeats := make([]*models.Heartbeat, 0, len(heartbeats))
for _, hb := range heartbeats {
if _, ok := hashes[hb.Hash]; !ok {
if !hashes.Contain(hb.Hash) {
filteredHeartbeats = append(filteredHeartbeats, hb)
hashes[hb.Hash] = true
hashes.Add(hb.Hash)
}
go srv.updateEntityUserCacheByHeartbeat(hb)
}
@ -159,7 +159,7 @@ func (srv *HeartbeatService) GetEntitySetByUser(entityType uint8, user *models.U
if results, found := srv.cache.Get(cacheKey); found {
srv.entityCacheLock.RLock()
defer srv.entityCacheLock.RUnlock()
return utils.SetToStrings(results.(map[string]bool)), nil
return results.(datastructure.Set[string]).Values(), nil
}
results, err := srv.repository.GetEntitySetByUser(entityType, user)
@ -174,7 +174,7 @@ func (srv *HeartbeatService) GetEntitySetByUser(entityType uint8, user *models.U
}
}
srv.cache.Set(cacheKey, utils.StringsToSet(filtered), cache.NoExpiration)
srv.cache.Set(cacheKey, datastructure.NewSet(filtered...), cache.NoExpiration)
return filtered, nil
}
@ -208,13 +208,13 @@ func (srv *HeartbeatService) getEntityUserCacheKey(entityType uint8, user *model
func (srv *HeartbeatService) updateEntityUserCache(entityType uint8, entityKey string, user *models.User) {
cacheKey := srv.getEntityUserCacheKey(entityType, user)
if entities, found := srv.cache.Get(cacheKey); found {
entitySet := entities.(map[string]bool)
entitySet := entities.(datastructure.Set[string])
srv.entityCacheLock.Lock()
defer srv.entityCacheLock.Unlock()
if _, ok := entitySet[entityKey]; !ok {
entitySet[entityKey] = true
if !entitySet.Contain(entityKey) {
entitySet.Add(entityKey)
// new project / language / ..., which is not yet present in cache, arrived as part of a heartbeats
// -> update cache instead of just invalidating it, because rebuilding is expensive here
srv.cache.Set(cacheKey, entitySet, cache.NoExpiration)

View File

@ -7,6 +7,7 @@ import (
"github.com/muety/wakapi/models"
"github.com/muety/wakapi/repositories"
"github.com/patrickmn/go-cache"
"github.com/samber/lo"
"time"
)
@ -45,38 +46,26 @@ func (srv *ProjectLabelService) GetByUser(userId string) ([]*models.ProjectLabel
// GetByUserGrouped returns lists of project labels, grouped by their project key
func (srv *ProjectLabelService) GetByUserGrouped(userId string) (map[string][]*models.ProjectLabel, error) {
labelsByProject := make(map[string][]*models.ProjectLabel)
userLabels, err := srv.GetByUser(userId)
if err != nil {
return nil, err
}
for _, l := range userLabels {
if _, ok := labelsByProject[l.ProjectKey]; !ok {
labelsByProject[l.ProjectKey] = []*models.ProjectLabel{l}
} else {
labelsByProject[l.ProjectKey] = append(labelsByProject[l.ProjectKey], l)
}
}
return labelsByProject, nil
mappedLabels := lo.GroupBy[*models.ProjectLabel, string](userLabels, func(l *models.ProjectLabel) string {
return l.ProjectKey
})
return mappedLabels, nil
}
// GetByUserGroupedInverted returns lists of project labels, grouped by their label key
func (srv *ProjectLabelService) GetByUserGroupedInverted(userId string) (map[string][]*models.ProjectLabel, error) {
projectsByLabel := make(map[string][]*models.ProjectLabel)
userLabels, err := srv.GetByUser(userId)
if err != nil {
return nil, err
}
for _, l := range userLabels {
if _, ok := projectsByLabel[l.Label]; !ok {
projectsByLabel[l.Label] = []*models.ProjectLabel{l}
} else {
projectsByLabel[l.Label] = append(projectsByLabel[l.Label], l)
}
}
return projectsByLabel, nil
mappedLabels := lo.GroupBy[*models.ProjectLabel, string](userLabels, func(l *models.ProjectLabel) string {
return l.Label
})
return mappedLabels, nil
}
func (srv *ProjectLabelService) Create(label *models.ProjectLabel) (*models.ProjectLabel, error) {

View File

@ -1,13 +1,14 @@
package services
import (
datastructure "github.com/duke-git/lancet/v2/datastructure/set"
"github.com/muety/wakapi/models"
"time"
)
type IAggregationService interface {
Schedule()
Run(map[string]bool) error
Run(set datastructure.Set[string]) error
}
type IMiscService interface {

View File

@ -1,9 +0,0 @@
package utils
func GetMapValues(m map[string]interface{}) []interface{} {
values := make([]interface{}, 0, len(m))
for _, v := range m {
values = append(values, v)
}
return values
}

View File

@ -5,6 +5,12 @@ import (
"time"
)
// TODO: replace these functions by github.com/duke-git/lancet/v2/datetime
// needs additional thoughts, though, as for "EndOfX" functions, we currently return the discrete next day,
// while the above lib returns the very last nanosecond of the current day, i.e.
// 2022-02-15 23:59:59.999 +0800 CST vs. 2022-02-16 00:00:00.000 +0800 CST
// -> need to revisit comparison logic, etc.
func StartOfDay(date time.Time) time.Time {
return FloorDate(date)
}

View File

@ -1,17 +0,0 @@
package utils
func StringsToSet(slice []string) map[string]bool {
set := make(map[string]bool, len(slice))
for _, e := range slice {
set[e] = true
}
return set
}
func SetToStrings(set map[string]bool) []string {
slice := make([]string, 0, len(set))
for k := range set {
slice = append(slice, k)
}
return slice
}

View File

@ -8,12 +8,3 @@ import (
func Capitalize(s string) string {
return fmt.Sprintf("%s%s", strings.ToUpper(s[:1]), s[1:])
}
func FindString(needle string, haystack []string, defaultVal string) string {
for _, s := range haystack {
if s == needle {
return s
}
}
return defaultVal
}

View File

@ -1 +1 @@
2.3.1
2.3.2