diff --git a/coverage/coverage.out b/coverage/coverage.out index cf0996d..f4c29a6 100644 --- a/coverage/coverage.out +++ b/coverage/coverage.out @@ -1,4 +1,46 @@ 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/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/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/heartbeat.go:33.34,35.2 1 1 github.com/muety/wakapi/models/heartbeat.go:37.65,39.46 2 1 github.com/muety/wakapi/models/heartbeat.go:39.46,40.108 1 1 @@ -17,16 +59,6 @@ github.com/muety/wakapi/models/heartbeat.go:70.37,86.2 1 0 github.com/muety/wakapi/models/heartbeat.go:94.41,96.16 2 0 github.com/muety/wakapi/models/heartbeat.go:99.2,100.10 2 0 github.com/muety/wakapi/models/heartbeat.go:96.16,98.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/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 @@ -45,101 +77,8 @@ 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/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/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/filters.go:21.33,23.2 1 1 -github.com/muety/wakapi/models/filters.go:25.48,26.22 1 1 -github.com/muety/wakapi/models/filters.go:31.2,31.14 1 1 -github.com/muety/wakapi/models/filters.go:26.22,27.18 1 1 -github.com/muety/wakapi/models/filters.go:27.18,29.4 1 1 -github.com/muety/wakapi/models/filters.go:39.56,41.2 1 1 -github.com/muety/wakapi/models/filters.go:43.66,46.2 2 1 -github.com/muety/wakapi/models/filters.go:48.59,50.2 1 1 -github.com/muety/wakapi/models/filters.go:52.70,53.16 1 1 -github.com/muety/wakapi/models/filters.go:69.2,69.10 1 1 -github.com/muety/wakapi/models/filters.go:54.22,55.41 1 1 -github.com/muety/wakapi/models/filters.go:56.17,57.31 1 0 -github.com/muety/wakapi/models/filters.go:58.23,59.43 1 1 -github.com/muety/wakapi/models/filters.go:60.21,61.39 1 0 -github.com/muety/wakapi/models/filters.go:62.22,63.41 1 0 -github.com/muety/wakapi/models/filters.go:64.20,65.37 1 1 -github.com/muety/wakapi/models/filters.go:66.21,67.39 1 0 -github.com/muety/wakapi/models/filters.go:72.49,73.44 1 1 -github.com/muety/wakapi/models/filters.go:88.2,88.29 1 1 -github.com/muety/wakapi/models/filters.go:73.44,75.3 1 1 -github.com/muety/wakapi/models/filters.go:75.8,75.41 1 1 -github.com/muety/wakapi/models/filters.go:75.41,77.3 1 0 -github.com/muety/wakapi/models/filters.go:77.8,77.53 1 1 -github.com/muety/wakapi/models/filters.go:77.53,79.3 1 1 -github.com/muety/wakapi/models/filters.go:79.8,79.49 1 1 -github.com/muety/wakapi/models/filters.go:79.49,81.3 1 0 -github.com/muety/wakapi/models/filters.go:81.8,81.51 1 1 -github.com/muety/wakapi/models/filters.go:81.51,83.3 1 0 -github.com/muety/wakapi/models/filters.go:83.8,83.47 1 1 -github.com/muety/wakapi/models/filters.go:83.47,85.3 1 0 -github.com/muety/wakapi/models/filters.go:85.8,85.49 1 1 -github.com/muety/wakapi/models/filters.go:85.49,87.3 1 0 -github.com/muety/wakapi/models/filters.go:91.46,92.30 1 1 -github.com/muety/wakapi/models/filters.go:95.2,95.24 1 0 -github.com/muety/wakapi/models/filters.go:92.30,94.3 1 1 -github.com/muety/wakapi/models/filters.go:98.34,101.2 2 1 -github.com/muety/wakapi/models/filters.go:103.33,105.16 2 0 -github.com/muety/wakapi/models/filters.go:108.2,108.32 1 0 -github.com/muety/wakapi/models/filters.go:105.16,107.3 1 0 -github.com/muety/wakapi/models/filters.go:111.44,117.2 1 1 -github.com/muety/wakapi/models/filters.go:120.70,121.22 1 1 -github.com/muety/wakapi/models/filters.go:129.2,129.17 1 1 -github.com/muety/wakapi/models/filters.go:137.2,137.23 1 1 -github.com/muety/wakapi/models/filters.go:145.2,145.21 1 1 -github.com/muety/wakapi/models/filters.go:153.2,153.22 1 1 -github.com/muety/wakapi/models/filters.go:161.2,161.21 1 1 -github.com/muety/wakapi/models/filters.go:169.2,169.10 1 1 -github.com/muety/wakapi/models/filters.go:121.22,123.31 2 1 -github.com/muety/wakapi/models/filters.go:127.3,127.22 1 1 -github.com/muety/wakapi/models/filters.go:123.31,126.4 2 1 -github.com/muety/wakapi/models/filters.go:129.17,131.26 2 0 -github.com/muety/wakapi/models/filters.go:135.3,135.17 1 0 -github.com/muety/wakapi/models/filters.go:131.26,134.4 2 0 -github.com/muety/wakapi/models/filters.go:137.23,139.32 2 1 -github.com/muety/wakapi/models/filters.go:143.3,143.23 1 1 -github.com/muety/wakapi/models/filters.go:139.32,142.4 2 1 -github.com/muety/wakapi/models/filters.go:145.21,147.30 2 0 -github.com/muety/wakapi/models/filters.go:151.3,151.21 1 0 -github.com/muety/wakapi/models/filters.go:147.30,150.4 2 0 -github.com/muety/wakapi/models/filters.go:153.22,155.31 2 0 -github.com/muety/wakapi/models/filters.go:159.3,159.22 1 0 -github.com/muety/wakapi/models/filters.go:155.31,158.4 2 0 -github.com/muety/wakapi/models/filters.go:161.21,163.30 2 0 -github.com/muety/wakapi/models/filters.go:167.3,167.21 1 0 -github.com/muety/wakapi/models/filters.go:163.30,166.4 2 0 -github.com/muety/wakapi/models/filters.go:172.83,173.41 1 1 -github.com/muety/wakapi/models/filters.go:176.2,176.28 1 1 -github.com/muety/wakapi/models/filters.go:179.2,179.10 1 1 -github.com/muety/wakapi/models/filters.go:173.41,175.3 1 0 -github.com/muety/wakapi/models/filters.go:176.28,178.3 1 1 -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/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/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 @@ -155,22 +94,6 @@ 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/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/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/summary.go:63.29,65.2 1 1 github.com/muety/wakapi/models/summary.go:67.35,69.2 1 0 github.com/muety/wakapi/models/summary.go:71.38,73.2 1 0 @@ -261,162 +184,101 @@ github.com/muety/wakapi/models/user.go:86.2,87.16 2 1 github.com/muety/wakapi/models/user.go:90.2,90.11 1 1 github.com/muety/wakapi/models/user.go:83.22,85.3 1 1 github.com/muety/wakapi/models/user.go:87.16,89.3 1 0 -github.com/muety/wakapi/models/user.go:93.41,96.2 2 1 -github.com/muety/wakapi/models/user.go:98.53,101.54 3 0 -github.com/muety/wakapi/models/user.go:104.2,104.51 1 0 -github.com/muety/wakapi/models/user.go:107.2,107.20 1 0 -github.com/muety/wakapi/models/user.go:101.54,103.3 1 0 -github.com/muety/wakapi/models/user.go:104.51,106.3 1 0 -github.com/muety/wakapi/models/user.go:110.43,113.2 1 0 -github.com/muety/wakapi/models/user.go:115.45,118.2 1 0 -github.com/muety/wakapi/models/user.go:120.33,125.2 1 0 -github.com/muety/wakapi/models/user.go:127.41,129.2 1 0 -github.com/muety/wakapi/models/user.go:131.45,133.2 1 0 -github.com/muety/wakapi/models/user.go:135.45,137.2 1 0 -github.com/muety/wakapi/models/user.go:139.39,141.2 1 0 -github.com/muety/wakapi/models/user.go:143.39,146.2 2 0 +github.com/muety/wakapi/models/user.go:95.41,98.2 2 1 +github.com/muety/wakapi/models/user.go:100.53,103.54 3 0 +github.com/muety/wakapi/models/user.go:106.2,106.51 1 0 +github.com/muety/wakapi/models/user.go:109.2,109.20 1 0 +github.com/muety/wakapi/models/user.go:103.54,105.3 1 0 +github.com/muety/wakapi/models/user.go:106.51,108.3 1 0 +github.com/muety/wakapi/models/user.go:112.43,115.2 1 0 +github.com/muety/wakapi/models/user.go:117.45,120.2 1 0 +github.com/muety/wakapi/models/user.go:122.33,127.2 1 0 +github.com/muety/wakapi/models/user.go:129.41,131.2 1 0 +github.com/muety/wakapi/models/user.go:133.45,135.2 1 0 +github.com/muety/wakapi/models/user.go:137.45,139.2 1 0 +github.com/muety/wakapi/models/user.go:141.39,143.2 1 0 +github.com/muety/wakapi/models/user.go:145.39,148.2 2 0 +github.com/muety/wakapi/models/filters.go:21.33,23.2 1 1 +github.com/muety/wakapi/models/filters.go:25.48,26.22 1 1 +github.com/muety/wakapi/models/filters.go:31.2,31.14 1 1 +github.com/muety/wakapi/models/filters.go:26.22,27.18 1 1 +github.com/muety/wakapi/models/filters.go:27.18,29.4 1 1 +github.com/muety/wakapi/models/filters.go:39.56,41.2 1 1 +github.com/muety/wakapi/models/filters.go:43.66,46.2 2 1 +github.com/muety/wakapi/models/filters.go:48.59,50.2 1 1 +github.com/muety/wakapi/models/filters.go:52.70,53.16 1 1 +github.com/muety/wakapi/models/filters.go:69.2,69.10 1 1 +github.com/muety/wakapi/models/filters.go:54.22,55.41 1 1 +github.com/muety/wakapi/models/filters.go:56.17,57.31 1 0 +github.com/muety/wakapi/models/filters.go:58.23,59.43 1 1 +github.com/muety/wakapi/models/filters.go:60.21,61.39 1 0 +github.com/muety/wakapi/models/filters.go:62.22,63.41 1 0 +github.com/muety/wakapi/models/filters.go:64.20,65.37 1 1 +github.com/muety/wakapi/models/filters.go:66.21,67.39 1 0 +github.com/muety/wakapi/models/filters.go:72.49,73.44 1 1 +github.com/muety/wakapi/models/filters.go:88.2,88.29 1 1 +github.com/muety/wakapi/models/filters.go:73.44,75.3 1 1 +github.com/muety/wakapi/models/filters.go:75.8,75.41 1 1 +github.com/muety/wakapi/models/filters.go:75.41,77.3 1 0 +github.com/muety/wakapi/models/filters.go:77.8,77.53 1 1 +github.com/muety/wakapi/models/filters.go:77.53,79.3 1 1 +github.com/muety/wakapi/models/filters.go:79.8,79.49 1 1 +github.com/muety/wakapi/models/filters.go:79.49,81.3 1 0 +github.com/muety/wakapi/models/filters.go:81.8,81.51 1 1 +github.com/muety/wakapi/models/filters.go:81.51,83.3 1 0 +github.com/muety/wakapi/models/filters.go:83.8,83.47 1 1 +github.com/muety/wakapi/models/filters.go:83.47,85.3 1 0 +github.com/muety/wakapi/models/filters.go:85.8,85.49 1 1 +github.com/muety/wakapi/models/filters.go:85.49,87.3 1 0 +github.com/muety/wakapi/models/filters.go:91.46,92.30 1 1 +github.com/muety/wakapi/models/filters.go:95.2,95.24 1 0 +github.com/muety/wakapi/models/filters.go:92.30,94.3 1 1 +github.com/muety/wakapi/models/filters.go:98.34,101.2 2 1 +github.com/muety/wakapi/models/filters.go:103.33,105.16 2 0 +github.com/muety/wakapi/models/filters.go:108.2,108.32 1 0 +github.com/muety/wakapi/models/filters.go:105.16,107.3 1 0 +github.com/muety/wakapi/models/filters.go:111.44,117.2 1 1 +github.com/muety/wakapi/models/filters.go:120.70,121.22 1 1 +github.com/muety/wakapi/models/filters.go:129.2,129.17 1 1 +github.com/muety/wakapi/models/filters.go:137.2,137.23 1 1 +github.com/muety/wakapi/models/filters.go:145.2,145.21 1 1 +github.com/muety/wakapi/models/filters.go:153.2,153.22 1 1 +github.com/muety/wakapi/models/filters.go:161.2,161.21 1 1 +github.com/muety/wakapi/models/filters.go:169.2,169.10 1 1 +github.com/muety/wakapi/models/filters.go:121.22,123.31 2 1 +github.com/muety/wakapi/models/filters.go:127.3,127.22 1 1 +github.com/muety/wakapi/models/filters.go:123.31,126.4 2 1 +github.com/muety/wakapi/models/filters.go:129.17,131.26 2 0 +github.com/muety/wakapi/models/filters.go:135.3,135.17 1 0 +github.com/muety/wakapi/models/filters.go:131.26,134.4 2 0 +github.com/muety/wakapi/models/filters.go:137.23,139.32 2 1 +github.com/muety/wakapi/models/filters.go:143.3,143.23 1 1 +github.com/muety/wakapi/models/filters.go:139.32,142.4 2 1 +github.com/muety/wakapi/models/filters.go:145.21,147.30 2 0 +github.com/muety/wakapi/models/filters.go:151.3,151.21 1 0 +github.com/muety/wakapi/models/filters.go:147.30,150.4 2 0 +github.com/muety/wakapi/models/filters.go:153.22,155.31 2 0 +github.com/muety/wakapi/models/filters.go:159.3,159.22 1 0 +github.com/muety/wakapi/models/filters.go:155.31,158.4 2 0 +github.com/muety/wakapi/models/filters.go:161.21,163.30 2 0 +github.com/muety/wakapi/models/filters.go:167.3,167.21 1 0 +github.com/muety/wakapi/models/filters.go:163.30,166.4 2 0 +github.com/muety/wakapi/models/filters.go:172.83,173.41 1 1 +github.com/muety/wakapi/models/filters.go:176.2,176.28 1 1 +github.com/muety/wakapi/models/filters.go:179.2,179.10 1 1 +github.com/muety/wakapi/models/filters.go:173.41,175.3 1 0 +github.com/muety/wakapi/models/filters.go:176.28,178.3 1 1 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/middlewares/principal.go:15.62,17.2 1 0 -github.com/muety/wakapi/middlewares/principal.go:19.58,21.2 1 0 -github.com/muety/wakapi/middlewares/principal.go:42.71,43.43 1 0 -github.com/muety/wakapi/middlewares/principal.go:43.43,45.3 1 0 -github.com/muety/wakapi/middlewares/principal.go:48.81,51.2 2 0 -github.com/muety/wakapi/middlewares/principal.go:53.55,54.52 1 0 -github.com/muety/wakapi/middlewares/principal.go:54.52,56.3 1 0 -github.com/muety/wakapi/middlewares/principal.go:59.49,60.52 1 0 -github.com/muety/wakapi/middlewares/principal.go:63.2,63.12 1 0 -github.com/muety/wakapi/middlewares/principal.go:60.52,62.3 1 0 -github.com/muety/wakapi/middlewares/security.go:19.62,20.43 1 0 -github.com/muety/wakapi/middlewares/security.go:20.43,22.3 1 0 -github.com/muety/wakapi/middlewares/security.go:25.80,26.36 1 0 -github.com/muety/wakapi/middlewares/security.go:31.2,31.27 1 0 -github.com/muety/wakapi/middlewares/security.go:26.36,27.30 1 0 -github.com/muety/wakapi/middlewares/security.go:27.30,29.4 1 0 -github.com/muety/wakapi/middlewares/sentry.go:15.60,16.43 1 0 -github.com/muety/wakapi/middlewares/sentry.go:16.43,20.3 1 0 -github.com/muety/wakapi/middlewares/sentry.go:23.78,26.54 3 0 -github.com/muety/wakapi/middlewares/sentry.go:26.54,27.43 1 0 -github.com/muety/wakapi/middlewares/sentry.go:27.43,29.4 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:30.91,36.2 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:38.90,41.2 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:43.90,46.2 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:48.71,49.71 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:49.71,51.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:54.107,58.16 3 0 -github.com/muety/wakapi/middlewares/authenticate.go:61.2,61.16 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:65.2,65.31 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:81.2,82.12 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:58.16,60.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:61.16,63.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:65.31,66.31 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:71.3,71.29 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:78.3,78.9 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:66.31,69.4 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:71.29,74.4 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:74.9,77.4 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:85.70,86.39 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:91.2,91.14 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:86.39,87.60 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:87.60,89.4 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:94.98,96.16 2 1 -github.com/muety/wakapi/middlewares/authenticate.go:100.2,103.16 4 1 -github.com/muety/wakapi/middlewares/authenticate.go:106.2,106.18 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:96.16,98.3 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:103.16,105.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:109.97,113.19 4 1 -github.com/muety/wakapi/middlewares/authenticate.go:116.2,117.16 2 1 -github.com/muety/wakapi/middlewares/authenticate.go:120.2,120.18 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:113.19,115.3 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:117.16,119.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:123.92,125.16 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:129.2,130.16 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:137.2,137.18 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:125.16,127.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:130.16,132.3 1 0 -github.com/muety/wakapi/middlewares/filetype.go:13.83,14.43 1 0 -github.com/muety/wakapi/middlewares/filetype.go:14.43,19.3 1 0 -github.com/muety/wakapi/middlewares/filetype.go:22.84,24.34 2 0 -github.com/muety/wakapi/middlewares/filetype.go:31.2,31.27 1 0 -github.com/muety/wakapi/middlewares/filetype.go:24.34,25.50 1 0 -github.com/muety/wakapi/middlewares/filetype.go:25.50,29.4 3 0 -github.com/muety/wakapi/middlewares/logging.go:20.102,21.43 1 0 -github.com/muety/wakapi/middlewares/logging.go:21.43,27.3 1 0 -github.com/muety/wakapi/middlewares/logging.go:30.80,39.44 7 0 -github.com/muety/wakapi/middlewares/logging.go:45.2,54.3 1 0 -github.com/muety/wakapi/middlewares/logging.go:39.44,40.38 1 0 -github.com/muety/wakapi/middlewares/logging.go:40.38,42.4 1 0 -github.com/muety/wakapi/middlewares/logging.go:57.41,59.14 2 0 -github.com/muety/wakapi/middlewares/logging.go:62.2,62.14 1 0 -github.com/muety/wakapi/middlewares/logging.go:65.2,65.11 1 0 -github.com/muety/wakapi/middlewares/logging.go:59.14,61.3 1 0 -github.com/muety/wakapi/middlewares/logging.go:62.14,64.3 1 0 -github.com/muety/wakapi/middlewares/logging.go:68.41,69.42 1 0 -github.com/muety/wakapi/middlewares/logging.go:72.2,72.12 1 0 -github.com/muety/wakapi/middlewares/logging.go:69.42,71.3 1 0 -github.com/muety/wakapi/middlewares/logging.go:103.52,105.2 1 0 -github.com/muety/wakapi/middlewares/logging.go:117.45,118.20 1 0 -github.com/muety/wakapi/middlewares/logging.go:118.20,122.3 3 0 -github.com/muety/wakapi/middlewares/logging.go:124.54,127.18 3 0 -github.com/muety/wakapi/middlewares/logging.go:134.2,135.15 2 0 -github.com/muety/wakapi/middlewares/logging.go:127.18,130.17 2 0 -github.com/muety/wakapi/middlewares/logging.go:130.17,132.4 1 0 -github.com/muety/wakapi/middlewares/logging.go:137.42,138.20 1 0 -github.com/muety/wakapi/middlewares/logging.go:138.20,140.3 1 0 -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/config/db.go:39.50,40.19 1 0 -github.com/muety/wakapi/config/db.go:53.2,53.12 1 0 -github.com/muety/wakapi/config/db.go:41.23,45.5 1 0 -github.com/muety/wakapi/config/db.go:46.26,49.5 1 0 -github.com/muety/wakapi/config/db.go:50.24,51.48 1 0 -github.com/muety/wakapi/config/db.go:56.53,66.2 1 1 -github.com/muety/wakapi/config/db.go:68.56,70.16 2 1 -github.com/muety/wakapi/config/db.go:74.2,81.3 1 1 -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/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/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.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/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 @@ -512,19 +374,54 @@ github.com/muety/wakapi/config/config.go:387.51,390.3 2 0 github.com/muety/wakapi/config/config.go:391.94,393.3 1 0 github.com/muety/wakapi/config/config.go:394.81,396.3 1 0 github.com/muety/wakapi/config/config.go:397.75,399.3 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/config/db.go:39.50,40.19 1 0 +github.com/muety/wakapi/config/db.go:53.2,53.12 1 0 +github.com/muety/wakapi/config/db.go:41.23,45.5 1 0 +github.com/muety/wakapi/config/db.go:46.26,49.5 1 0 +github.com/muety/wakapi/config/db.go:50.24,51.48 1 0 +github.com/muety/wakapi/config/db.go:56.53,66.2 1 1 +github.com/muety/wakapi/config/db.go:68.56,70.16 2 1 +github.com/muety/wakapi/config/db.go:74.2,81.3 1 1 +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/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/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 @@ -550,13 +447,30 @@ 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.79,114.36 3 1 -github.com/muety/wakapi/utils/date.go:118.2,118.21 1 1 -github.com/muety/wakapi/utils/date.go:122.2,122.21 1 1 -github.com/muety/wakapi/utils/date.go:126.2,126.13 1 1 -github.com/muety/wakapi/utils/date.go:114.36,117.3 2 0 -github.com/muety/wakapi/utils/date.go:118.21,121.3 2 1 -github.com/muety/wakapi/utils/date.go:122.21,125.3 2 1 +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/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/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 @@ -608,55 +522,6 @@ 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/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/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/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/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/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/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/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 @@ -676,6 +541,252 @@ 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/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/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/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/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/middlewares/filetype.go:13.83,14.43 1 0 +github.com/muety/wakapi/middlewares/filetype.go:14.43,19.3 1 0 +github.com/muety/wakapi/middlewares/filetype.go:22.84,24.34 2 0 +github.com/muety/wakapi/middlewares/filetype.go:31.2,31.27 1 0 +github.com/muety/wakapi/middlewares/filetype.go:24.34,25.50 1 0 +github.com/muety/wakapi/middlewares/filetype.go:25.50,29.4 3 0 +github.com/muety/wakapi/middlewares/logging.go:20.102,21.43 1 0 +github.com/muety/wakapi/middlewares/logging.go:21.43,27.3 1 0 +github.com/muety/wakapi/middlewares/logging.go:30.80,39.44 7 0 +github.com/muety/wakapi/middlewares/logging.go:45.2,54.3 1 0 +github.com/muety/wakapi/middlewares/logging.go:39.44,40.38 1 0 +github.com/muety/wakapi/middlewares/logging.go:40.38,42.4 1 0 +github.com/muety/wakapi/middlewares/logging.go:57.41,59.14 2 0 +github.com/muety/wakapi/middlewares/logging.go:62.2,62.14 1 0 +github.com/muety/wakapi/middlewares/logging.go:65.2,65.11 1 0 +github.com/muety/wakapi/middlewares/logging.go:59.14,61.3 1 0 +github.com/muety/wakapi/middlewares/logging.go:62.14,64.3 1 0 +github.com/muety/wakapi/middlewares/logging.go:68.41,69.42 1 0 +github.com/muety/wakapi/middlewares/logging.go:72.2,72.12 1 0 +github.com/muety/wakapi/middlewares/logging.go:69.42,71.3 1 0 +github.com/muety/wakapi/middlewares/logging.go:103.52,105.2 1 0 +github.com/muety/wakapi/middlewares/logging.go:117.45,118.20 1 0 +github.com/muety/wakapi/middlewares/logging.go:118.20,122.3 3 0 +github.com/muety/wakapi/middlewares/logging.go:124.54,127.18 3 0 +github.com/muety/wakapi/middlewares/logging.go:134.2,135.15 2 0 +github.com/muety/wakapi/middlewares/logging.go:127.18,130.17 2 0 +github.com/muety/wakapi/middlewares/logging.go:130.17,132.4 1 0 +github.com/muety/wakapi/middlewares/logging.go:137.42,138.20 1 0 +github.com/muety/wakapi/middlewares/logging.go:138.20,140.3 1 0 +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/middlewares/principal.go:15.62,17.2 1 0 +github.com/muety/wakapi/middlewares/principal.go:19.58,21.2 1 0 +github.com/muety/wakapi/middlewares/principal.go:42.71,43.43 1 0 +github.com/muety/wakapi/middlewares/principal.go:43.43,45.3 1 0 +github.com/muety/wakapi/middlewares/principal.go:48.81,51.2 2 0 +github.com/muety/wakapi/middlewares/principal.go:53.55,54.52 1 0 +github.com/muety/wakapi/middlewares/principal.go:54.52,56.3 1 0 +github.com/muety/wakapi/middlewares/principal.go:59.49,60.52 1 0 +github.com/muety/wakapi/middlewares/principal.go:63.2,63.12 1 0 +github.com/muety/wakapi/middlewares/principal.go:60.52,62.3 1 0 +github.com/muety/wakapi/middlewares/security.go:19.62,20.43 1 0 +github.com/muety/wakapi/middlewares/security.go:20.43,22.3 1 0 +github.com/muety/wakapi/middlewares/security.go:25.80,26.36 1 0 +github.com/muety/wakapi/middlewares/security.go:31.2,31.27 1 0 +github.com/muety/wakapi/middlewares/security.go:26.36,27.30 1 0 +github.com/muety/wakapi/middlewares/security.go:27.30,29.4 1 0 +github.com/muety/wakapi/middlewares/sentry.go:15.60,16.43 1 0 +github.com/muety/wakapi/middlewares/sentry.go:16.43,20.3 1 0 +github.com/muety/wakapi/middlewares/sentry.go:23.78,26.54 3 0 +github.com/muety/wakapi/middlewares/sentry.go:26.54,27.43 1 0 +github.com/muety/wakapi/middlewares/sentry.go:27.43,29.4 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:30.91,36.2 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:38.90,41.2 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:43.90,46.2 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:48.71,49.71 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:49.71,51.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:54.107,58.16 3 0 +github.com/muety/wakapi/middlewares/authenticate.go:61.2,61.16 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:65.2,65.31 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:81.2,82.12 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:58.16,60.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:61.16,63.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:65.31,66.31 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:71.3,71.29 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:78.3,78.9 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:66.31,69.4 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:71.29,74.4 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:74.9,77.4 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:85.70,86.39 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:91.2,91.14 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:86.39,87.60 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:87.60,89.4 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:94.98,96.16 2 1 +github.com/muety/wakapi/middlewares/authenticate.go:100.2,103.16 4 1 +github.com/muety/wakapi/middlewares/authenticate.go:106.2,106.18 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:96.16,98.3 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:103.16,105.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:109.97,113.19 4 1 +github.com/muety/wakapi/middlewares/authenticate.go:116.2,117.16 2 1 +github.com/muety/wakapi/middlewares/authenticate.go:120.2,120.18 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:113.19,115.3 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:117.16,119.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:123.92,125.16 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:129.2,130.16 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:137.2,137.18 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:125.16,127.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:130.16,132.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 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:64.2,65.75 2 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:71.2,73.16 3 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:78.2,81.62 3 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:87.2,89.22 3 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:114.2,114.19 1 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:120.2,121.50 2 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:126.2,127.16 2 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:133.2,135.44 3 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:60.79,62.3 1 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:65.75,66.59 1 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:66.59,68.4 1 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:73.16,76.3 2 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:81.62,85.3 3 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:90.17,92.68 2 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:93.12,95.63 2 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:96.16,98.67 2 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:99.18,101.69 2 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:102.17,104.68 2 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:105.15,107.66 2 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:109.10,111.30 2 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:114.19,118.3 3 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:121.50,124.3 2 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:127.16,131.3 3 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:138.144,140.16 2 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:144.2,151.29 3 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:155.2,163.16 2 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:167.2,167.36 1 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:140.16,142.3 1 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:151.29,153.3 1 0 +github.com/muety/wakapi/routes/compat/shields/v1/badge.go:163.16,165.3 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/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 +github.com/muety/wakapi/services/user.go:35.31,41.61 4 0 +github.com/muety/wakapi/services/user.go:45.4,45.24 1 0 +github.com/muety/wakapi/services/user.go:41.61,43.5 1 0 +github.com/muety/wakapi/services/user.go:45.24,46.80 1 0 +github.com/muety/wakapi/services/user.go:46.80,48.6 1 0 +github.com/muety/wakapi/services/user.go:48.11,50.6 1 0 +github.com/muety/wakapi/services/user.go:58.74,59.40 1 0 +github.com/muety/wakapi/services/user.go:63.2,64.16 2 0 +github.com/muety/wakapi/services/user.go:68.2,69.15 2 0 +github.com/muety/wakapi/services/user.go:59.40,61.3 1 0 +github.com/muety/wakapi/services/user.go:64.16,66.3 1 0 +github.com/muety/wakapi/services/user.go:72.72,73.37 1 0 +github.com/muety/wakapi/services/user.go:77.2,78.16 2 0 +github.com/muety/wakapi/services/user.go:82.2,83.15 2 0 +github.com/muety/wakapi/services/user.go:73.37,75.3 1 0 +github.com/muety/wakapi/services/user.go:78.16,80.3 1 0 +github.com/muety/wakapi/services/user.go:86.76,88.2 1 0 +github.com/muety/wakapi/services/user.go:90.86,92.2 1 0 +github.com/muety/wakapi/services/user.go:94.58,96.2 1 0 +github.com/muety/wakapi/services/user.go:98.86,100.2 1 0 +github.com/muety/wakapi/services/user.go:102.71,104.12 2 0 +github.com/muety/wakapi/services/user.go:108.2,109.42 2 0 +github.com/muety/wakapi/services/user.go:113.2,114.16 2 0 +github.com/muety/wakapi/services/user.go:118.2,119.21 2 0 +github.com/muety/wakapi/services/user.go:104.12,106.3 1 0 +github.com/muety/wakapi/services/user.go:109.42,111.3 1 0 +github.com/muety/wakapi/services/user.go:114.16,116.3 1 0 +github.com/muety/wakapi/services/user.go:122.48,124.2 1 0 +github.com/muety/wakapi/services/user.go:126.102,136.93 2 0 +github.com/muety/wakapi/services/user.go:142.2,142.38 1 0 +github.com/muety/wakapi/services/user.go:136.93,138.3 1 0 +github.com/muety/wakapi/services/user.go:138.8,140.3 1 0 +github.com/muety/wakapi/services/user.go:145.73,149.2 3 0 +github.com/muety/wakapi/services/user.go:151.78,155.2 3 0 +github.com/muety/wakapi/services/user.go:157.99,160.2 2 0 +github.com/muety/wakapi/services/user.go:162.106,165.96 3 0 +github.com/muety/wakapi/services/user.go:170.2,170.68 1 0 +github.com/muety/wakapi/services/user.go:165.96,167.3 1 0 +github.com/muety/wakapi/services/user.go:167.8,169.3 1 0 +github.com/muety/wakapi/services/user.go:173.85,175.2 1 0 +github.com/muety/wakapi/services/user.go:177.57,184.2 4 0 +github.com/muety/wakapi/services/user.go:186.38,188.2 1 0 +github.com/muety/wakapi/services/user.go:190.57,195.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,26.16 2 1 +github.com/muety/wakapi/services/duration.go:31.2,36.31 4 1 +github.com/muety/wakapi/services/duration.go:71.2,73.31 2 1 +github.com/muety/wakapi/services/duration.go:82.2,82.32 1 1 +github.com/muety/wakapi/services/duration.go:26.16,28.3 1 0 +github.com/muety/wakapi/services/duration.go:36.31,37.42 1 1 +github.com/muety/wakapi/services/duration.go:41.3,43.62 2 1 +github.com/muety/wakapi/services/duration.go:47.3,47.20 1 1 +github.com/muety/wakapi/services/duration.go:52.3,53.35 2 1 +github.com/muety/wakapi/services/duration.go:56.3,58.72 2 1 +github.com/muety/wakapi/services/duration.go:68.3,68.10 1 1 +github.com/muety/wakapi/services/duration.go:37.42,38.12 1 1 +github.com/muety/wakapi/services/duration.go:43.62,45.4 1 1 +github.com/muety/wakapi/services/duration.go:47.20,49.12 2 1 +github.com/muety/wakapi/services/duration.go:53.35,55.4 1 1 +github.com/muety/wakapi/services/duration.go:58.72,60.41 2 1 +github.com/muety/wakapi/services/duration.go:63.4,63.15 1 1 +github.com/muety/wakapi/services/duration.go:60.41,62.5 1 1 +github.com/muety/wakapi/services/duration.go:64.9,66.4 1 1 +github.com/muety/wakapi/services/duration.go:73.31,74.26 1 1 +github.com/muety/wakapi/services/duration.go:74.26,75.23 1 1 +github.com/muety/wakapi/services/duration.go:78.4,78.36 1 1 +github.com/muety/wakapi/services/duration.go:75.23,77.5 1 1 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 @@ -737,13 +848,8 @@ github.com/muety/wakapi/services/heartbeat.go:221.32,226.3 1 0 github.com/muety/wakapi/services/heartbeat.go:229.72,231.2 1 0 github.com/muety/wakapi/services/heartbeat.go:233.58,235.2 1 0 github.com/muety/wakapi/services/heartbeat.go:237.60,239.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/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/language_mapping.go:18.118,24.2 1 0 github.com/muety/wakapi/services/language_mapping.go:26.86,28.2 1 0 github.com/muety/wakapi/services/language_mapping.go:30.96,31.53 1 0 @@ -763,6 +869,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/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/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 @@ -822,6 +949,117 @@ 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/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/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 @@ -949,188 +1187,3 @@ 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/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/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 -github.com/muety/wakapi/services/user.go:35.31,41.61 4 0 -github.com/muety/wakapi/services/user.go:45.4,45.24 1 0 -github.com/muety/wakapi/services/user.go:41.61,43.5 1 0 -github.com/muety/wakapi/services/user.go:45.24,46.80 1 0 -github.com/muety/wakapi/services/user.go:46.80,48.6 1 0 -github.com/muety/wakapi/services/user.go:48.11,50.6 1 0 -github.com/muety/wakapi/services/user.go:58.74,59.40 1 0 -github.com/muety/wakapi/services/user.go:63.2,64.16 2 0 -github.com/muety/wakapi/services/user.go:68.2,69.15 2 0 -github.com/muety/wakapi/services/user.go:59.40,61.3 1 0 -github.com/muety/wakapi/services/user.go:64.16,66.3 1 0 -github.com/muety/wakapi/services/user.go:72.72,73.37 1 0 -github.com/muety/wakapi/services/user.go:77.2,78.16 2 0 -github.com/muety/wakapi/services/user.go:82.2,83.15 2 0 -github.com/muety/wakapi/services/user.go:73.37,75.3 1 0 -github.com/muety/wakapi/services/user.go:78.16,80.3 1 0 -github.com/muety/wakapi/services/user.go:86.76,88.2 1 0 -github.com/muety/wakapi/services/user.go:90.86,92.2 1 0 -github.com/muety/wakapi/services/user.go:94.58,96.2 1 0 -github.com/muety/wakapi/services/user.go:98.86,100.2 1 0 -github.com/muety/wakapi/services/user.go:102.71,104.12 2 0 -github.com/muety/wakapi/services/user.go:108.2,109.42 2 0 -github.com/muety/wakapi/services/user.go:113.2,114.16 2 0 -github.com/muety/wakapi/services/user.go:118.2,119.21 2 0 -github.com/muety/wakapi/services/user.go:104.12,106.3 1 0 -github.com/muety/wakapi/services/user.go:109.42,111.3 1 0 -github.com/muety/wakapi/services/user.go:114.16,116.3 1 0 -github.com/muety/wakapi/services/user.go:122.48,124.2 1 0 -github.com/muety/wakapi/services/user.go:126.102,136.93 2 0 -github.com/muety/wakapi/services/user.go:142.2,142.38 1 0 -github.com/muety/wakapi/services/user.go:136.93,138.3 1 0 -github.com/muety/wakapi/services/user.go:138.8,140.3 1 0 -github.com/muety/wakapi/services/user.go:145.73,149.2 3 0 -github.com/muety/wakapi/services/user.go:151.78,155.2 3 0 -github.com/muety/wakapi/services/user.go:157.99,160.2 2 0 -github.com/muety/wakapi/services/user.go:162.106,165.96 3 0 -github.com/muety/wakapi/services/user.go:170.2,170.68 1 0 -github.com/muety/wakapi/services/user.go:165.96,167.3 1 0 -github.com/muety/wakapi/services/user.go:167.8,169.3 1 0 -github.com/muety/wakapi/services/user.go:173.85,175.2 1 0 -github.com/muety/wakapi/services/user.go:177.57,184.2 4 0 -github.com/muety/wakapi/services/user.go:186.38,188.2 1 0 -github.com/muety/wakapi/services/user.go:190.57,195.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/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.113,60.32 1 0 -github.com/muety/wakapi/services/alias.go:63.2,63.49 1 0 -github.com/muety/wakapi/services/alias.go:60.32,62.3 1 0 -github.com/muety/wakapi/services/alias.go:63.49,65.47 2 0 -github.com/muety/wakapi/services/alias.go:70.3,70.30 1 0 -github.com/muety/wakapi/services/alias.go:65.47,66.45 1 0 -github.com/muety/wakapi/services/alias.go:66.45,68.5 1 0 -github.com/muety/wakapi/services/alias.go:71.8,73.3 1 0 -github.com/muety/wakapi/services/alias.go:76.108,77.32 1 1 -github.com/muety/wakapi/services/alias.go:81.2,81.49 1 1 -github.com/muety/wakapi/services/alias.go:89.2,89.19 1 1 -github.com/muety/wakapi/services/alias.go:77.32,79.3 1 1 -github.com/muety/wakapi/services/alias.go:81.49,82.47 1 1 -github.com/muety/wakapi/services/alias.go:82.47,83.49 1 1 -github.com/muety/wakapi/services/alias.go:83.49,85.5 1 1 -github.com/muety/wakapi/services/alias.go:92.77,94.16 2 0 -github.com/muety/wakapi/services/alias.go:97.2,98.20 2 0 -github.com/muety/wakapi/services/alias.go:94.16,96.3 1 0 -github.com/muety/wakapi/services/alias.go:101.60,102.24 1 0 -github.com/muety/wakapi/services/alias.go:105.2,107.12 3 0 -github.com/muety/wakapi/services/alias.go:102.24,104.3 1 0 -github.com/muety/wakapi/services/alias.go:110.69,113.28 3 0 -github.com/muety/wakapi/services/alias.go:121.2,123.31 2 0 -github.com/muety/wakapi/services/alias.go:127.2,127.12 1 0 -github.com/muety/wakapi/services/alias.go:113.28,114.21 1 0 -github.com/muety/wakapi/services/alias.go:117.3,118.16 2 0 -github.com/muety/wakapi/services/alias.go:114.21,116.4 1 0 -github.com/muety/wakapi/services/alias.go:123.31,125.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,26.16 2 1 -github.com/muety/wakapi/services/duration.go:31.2,36.31 4 1 -github.com/muety/wakapi/services/duration.go:71.2,73.31 2 1 -github.com/muety/wakapi/services/duration.go:82.2,82.32 1 1 -github.com/muety/wakapi/services/duration.go:26.16,28.3 1 0 -github.com/muety/wakapi/services/duration.go:36.31,37.42 1 1 -github.com/muety/wakapi/services/duration.go:41.3,43.62 2 1 -github.com/muety/wakapi/services/duration.go:47.3,47.20 1 1 -github.com/muety/wakapi/services/duration.go:52.3,53.35 2 1 -github.com/muety/wakapi/services/duration.go:56.3,58.72 2 1 -github.com/muety/wakapi/services/duration.go:68.3,68.10 1 1 -github.com/muety/wakapi/services/duration.go:37.42,38.12 1 1 -github.com/muety/wakapi/services/duration.go:43.62,45.4 1 1 -github.com/muety/wakapi/services/duration.go:47.20,49.12 2 1 -github.com/muety/wakapi/services/duration.go:53.35,55.4 1 1 -github.com/muety/wakapi/services/duration.go:58.72,60.41 2 1 -github.com/muety/wakapi/services/duration.go:63.4,63.15 1 1 -github.com/muety/wakapi/services/duration.go:60.41,62.5 1 1 -github.com/muety/wakapi/services/duration.go:64.9,66.4 1 1 -github.com/muety/wakapi/services/duration.go:73.31,74.26 1 1 -github.com/muety/wakapi/services/duration.go:74.26,75.23 1 1 -github.com/muety/wakapi/services/duration.go:78.4,78.36 1 1 -github.com/muety/wakapi/services/duration.go:75.23,77.5 1 1 diff --git a/mocks/alias_service.go b/mocks/alias_service.go index 332ecb1..37c9eaf 100644 --- a/mocks/alias_service.go +++ b/mocks/alias_service.go @@ -29,6 +29,11 @@ func (m *AliasServiceMock) GetByUser(s string) ([]*models.Alias, error) { return args.Get(0).([]*models.Alias), args.Error(1) } +func (m *AliasServiceMock) GetByUserAndType(s string, u uint8) ([]*models.Alias, error) { + args := m.Called(s, u) + return args.Get(0).([]*models.Alias), args.Error(1) +} + func (m *AliasServiceMock) GetByUserAndKeyAndType(s string, s2 string, u uint8) ([]*models.Alias, error) { args := m.Called(s, s2, u) return args.Get(0).([]*models.Alias), args.Error(1) diff --git a/routes/settings.go b/routes/settings.go index c059bb0..42a9f12 100644 --- a/routes/settings.go +++ b/routes/settings.go @@ -10,6 +10,7 @@ import ( "github.com/muety/wakapi/middlewares" "github.com/muety/wakapi/models" "github.com/muety/wakapi/models/view" + routeutils "github.com/muety/wakapi/routes/utils" "github.com/muety/wakapi/services" "github.com/muety/wakapi/services/imports" "github.com/muety/wakapi/utils" @@ -669,12 +670,11 @@ func (h *SettingsHandler) buildViewModel(r *http.Request) *view.SettingsViewMode }) // projects - projects, err := h.heartbeatSrvc.GetEntitySetByUser(models.SummaryProject, user) + projects, err := routeutils.GetEffectiveProjectsList(user, h.heartbeatSrvc, h.aliasSrvc) if err != nil { conf.Log().Request(r).Error("error while fetching projects - %v", err) return &view.SettingsViewModel{Error: criticalError} } - sort.Strings(projects) return &view.SettingsViewModel{ User: user, diff --git a/routes/utils/project_utils.go b/routes/utils/project_utils.go new file mode 100644 index 0000000..2b5a330 --- /dev/null +++ b/routes/utils/project_utils.go @@ -0,0 +1,53 @@ +package utils + +import ( + "github.com/muety/wakapi/models" + "github.com/muety/wakapi/services" + "sort" +) + +// GetEffectiveProjectsList returns the user's projects, including all alias targets and excluding all remapped project names (alias sources) +// Example: "A" mapped to "AB" using an alias +// -> "A" itself should not appear as a project anymore +// -> 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 + } + + // 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 := make([]string, 0, len(projectsMap)) + for key, val := range projectsMap { + if !val { + continue + } + projects = append(projects, key) + } + + sort.Strings(projects) + return projects, nil +} diff --git a/services/alias.go b/services/alias.go index eddb4b4..26a27a4 100644 --- a/services/alias.go +++ b/services/alias.go @@ -56,21 +56,18 @@ func (srv *AliasService) GetByUser(userId string) ([]*models.Alias, error) { } } +func (srv *AliasService) GetByUserAndType(userId string, summaryType uint8) ([]*models.Alias, error) { + check := func(a *models.Alias) bool { + return a.Type == summaryType + } + return srv.getFiltered(userId, check) +} + func (srv *AliasService) GetByUserAndKeyAndType(userId, key string, summaryType uint8) ([]*models.Alias, error) { - if !srv.IsInitialized(userId) { - srv.MayInitializeUser(userId) - } - if aliases, ok := userAliases.Load(userId); ok { - filteredAliases := make([]*models.Alias, 0, len(aliases.([]*models.Alias))) - for _, a := range aliases.([]*models.Alias) { - if a.Key == key && a.Type == summaryType { - filteredAliases = append(filteredAliases, a) - } - } - return filteredAliases, nil - } else { - return nil, errors.New(fmt.Sprintf("no user aliases loaded for user %s", userId)) + check := func(a *models.Alias) bool { + return a.Key == key && a.Type == summaryType } + return srv.getFiltered(userId, check) } func (srv *AliasService) GetAliasOrDefault(userId string, summaryType uint8, value string) (string, error) { @@ -94,7 +91,11 @@ func (srv *AliasService) Create(alias *models.Alias) (*models.Alias, error) { if err != nil { return nil, err } + // manually update cache + srv.updateCache(alias, false) + // reload entire cache (async, though) go srv.MayInitializeUser(alias.UserID) + return result, nil } @@ -103,7 +104,14 @@ func (srv *AliasService) Delete(alias *models.Alias) error { return errors.New("no user id specified") } err := srv.repository.Delete(alias.ID) + + // manually update cache + if err == nil { + srv.updateCache(alias, false) + } + // reload entire cache (async, though) go srv.MayInitializeUser(alias.UserID) + return err } @@ -120,9 +128,53 @@ func (srv *AliasService) DeleteMulti(aliases []*models.Alias) error { err := srv.repository.DeleteBatch(ids) + // manually update cache + if err == nil { + for _, a := range aliases { + srv.updateCache(a, true) + } + } + // reload entire cache (async, though) for k := range affectedUsers { go srv.MayInitializeUser(k) } return err } + +func (srv *AliasService) updateCache(reason *models.Alias, removal bool) { + if !removal { + if aliases, ok := userAliases.Load(reason.UserID); ok { + updatedAliases := aliases.([]*models.Alias) + updatedAliases = append(updatedAliases, reason) + userAliases.Store(reason.UserID, updatedAliases) + } + } else { + if aliases, ok := userAliases.Load(reason.UserID); ok { + updatedAliases := make([]*models.Alias, 0, len(aliases.([]*models.Alias))) // if we only had generics... + for _, a := range aliases.([]*models.Alias) { + if a.ID != reason.ID { + updatedAliases = append(updatedAliases, a) + } + } + userAliases.Store(reason.UserID, updatedAliases) + } + } +} + +func (srv *AliasService) getFiltered(userId string, check func(alias *models.Alias) bool) ([]*models.Alias, error) { + if !srv.IsInitialized(userId) { + srv.MayInitializeUser(userId) + } + if aliases, ok := userAliases.Load(userId); ok { + filteredAliases := make([]*models.Alias, 0, len(aliases.([]*models.Alias))) + for _, a := range aliases.([]*models.Alias) { + if check(a) { + filteredAliases = append(filteredAliases, a) + } + } + return filteredAliases, nil + } else { + return nil, errors.New(fmt.Sprintf("no user aliases loaded for user %s", userId)) + } +} diff --git a/services/services.go b/services/services.go index e7b5696..0e8a6b6 100644 --- a/services/services.go +++ b/services/services.go @@ -21,6 +21,7 @@ type IAliasService interface { IsInitialized(string) bool InitializeUser(string) error GetByUser(string) ([]*models.Alias, error) + GetByUserAndType(string, uint8) ([]*models.Alias, error) GetByUserAndKeyAndType(string, string, uint8) ([]*models.Alias, error) GetAliasOrDefault(string, uint8, string) (string, error) }