diff --git a/config/eventbus.go b/config/eventbus.go index 910136b..570dc3c 100644 --- a/config/eventbus.go +++ b/config/eventbus.go @@ -8,11 +8,16 @@ type ApplicationEvent struct { } const ( - TopicUser = "user.*" - TopicHeartbeat = "heartbeat.*" - EventUserUpdate = "user.update" - EventHeartbeatCreate = "heartbeat.create" - FieldPayload = "payload" + TopicUser = "user.*" + TopicHeartbeat = "heartbeat.*" + TopicProjectLabel = "project_label.*" + EventUserUpdate = "user.update" + EventHeartbeatCreate = "heartbeat.create" + EventProjectLabelCreate = "project_label.create" + EventProjectLabelDelete = "project_label.delete" + FieldPayload = "payload" + FieldUser = "user" + FieldUserId = "user.id" ) var eventHub *hub.Hub diff --git a/coverage/coverage.out b/coverage/coverage.out index 791795d..297e745 100644 --- a/coverage/coverage.out +++ b/coverage/coverage.out @@ -1,20 +1,64 @@ mode: set +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/alias.go:12.32,14.2 1 0 +github.com/muety/wakapi/models/alias.go:16.37,17.35 1 0 +github.com/muety/wakapi/models/alias.go:22.2,22.14 1 0 +github.com/muety/wakapi/models/alias.go:17.35,18.18 1 0 +github.com/muety/wakapi/models/alias.go:18.18,20.4 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/user.go:8.13,10.2 1 1 +github.com/muety/wakapi/models/user.go:79.36,80.22 1 1 +github.com/muety/wakapi/models/user.go:83.2,84.16 2 1 +github.com/muety/wakapi/models/user.go:87.2,87.11 1 1 +github.com/muety/wakapi/models/user.go:80.22,82.3 1 1 +github.com/muety/wakapi/models/user.go:84.16,86.3 1 0 +github.com/muety/wakapi/models/user.go:90.41,93.2 2 1 +github.com/muety/wakapi/models/user.go:95.43,98.2 1 0 +github.com/muety/wakapi/models/user.go:100.45,103.2 1 0 +github.com/muety/wakapi/models/user.go:105.33,110.2 1 0 +github.com/muety/wakapi/models/user.go:112.41,114.2 1 0 +github.com/muety/wakapi/models/user.go:116.45,118.2 1 0 +github.com/muety/wakapi/models/user.go:120.45,122.2 1 0 +github.com/muety/wakapi/models/user.go:124.39,126.2 1 0 +github.com/muety/wakapi/models/user.go:128.39,131.2 2 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 +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:11.39,13.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 -github.com/muety/wakapi/models/shared.go:42.16,44.3 1 0 -github.com/muety/wakapi/models/shared.go:50.52,56.22 2 0 -github.com/muety/wakapi/models/shared.go:71.2,74.12 3 0 -github.com/muety/wakapi/models/shared.go:57.14,61.17 2 0 -github.com/muety/wakapi/models/shared.go:64.17,66.8 2 0 -github.com/muety/wakapi/models/shared.go:67.10,68.64 1 0 -github.com/muety/wakapi/models/shared.go:61.17,63.4 1 0 -github.com/muety/wakapi/models/shared.go:77.51,80.2 2 0 -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/summary.go:74.29,76.2 1 1 github.com/muety/wakapi/models/summary.go:78.35,80.2 1 0 github.com/muety/wakapi/models/summary.go:82.37,90.2 7 1 @@ -81,74 +125,6 @@ github.com/muety/wakapi/models/summary.go:287.50,291.2 1 1 github.com/muety/wakapi/models/summary.go:293.33,295.2 1 1 github.com/muety/wakapi/models/summary.go:297.43,299.2 1 1 github.com/muety/wakapi/models/summary.go:301.38,303.2 1 1 -github.com/muety/wakapi/models/user.go:8.13,10.2 1 1 -github.com/muety/wakapi/models/user.go:79.36,80.22 1 1 -github.com/muety/wakapi/models/user.go:83.2,84.16 2 1 -github.com/muety/wakapi/models/user.go:87.2,87.11 1 1 -github.com/muety/wakapi/models/user.go:80.22,82.3 1 1 -github.com/muety/wakapi/models/user.go:84.16,86.3 1 0 -github.com/muety/wakapi/models/user.go:90.41,93.2 2 1 -github.com/muety/wakapi/models/user.go:95.43,98.2 1 0 -github.com/muety/wakapi/models/user.go:100.45,103.2 1 0 -github.com/muety/wakapi/models/user.go:105.33,110.2 1 0 -github.com/muety/wakapi/models/user.go:112.41,114.2 1 0 -github.com/muety/wakapi/models/user.go:116.45,118.2 1 0 -github.com/muety/wakapi/models/user.go:120.45,122.2 1 0 -github.com/muety/wakapi/models/user.go:124.39,126.2 1 0 -github.com/muety/wakapi/models/user.go:128.39,131.2 2 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/heartbeat.go:32.34,34.2 1 1 -github.com/muety/wakapi/models/heartbeat.go:36.65,38.46 2 1 -github.com/muety/wakapi/models/heartbeat.go:38.46,39.108 1 1 -github.com/muety/wakapi/models/heartbeat.go:39.108,42.4 2 1 -github.com/muety/wakapi/models/heartbeat.go:46.50,47.11 1 1 -github.com/muety/wakapi/models/heartbeat.go:60.2,60.15 1 1 -github.com/muety/wakapi/models/heartbeat.go:64.2,64.12 1 1 -github.com/muety/wakapi/models/heartbeat.go:48.22,49.18 1 1 -github.com/muety/wakapi/models/heartbeat.go:50.21,51.17 1 1 -github.com/muety/wakapi/models/heartbeat.go:52.23,53.19 1 1 -github.com/muety/wakapi/models/heartbeat.go:54.17,55.26 1 1 -github.com/muety/wakapi/models/heartbeat.go:56.22,57.18 1 1 -github.com/muety/wakapi/models/heartbeat.go:60.15,62.3 1 1 -github.com/muety/wakapi/models/heartbeat.go:67.37,83.2 1 0 -github.com/muety/wakapi/models/heartbeat.go:91.41,93.16 2 0 -github.com/muety/wakapi/models/heartbeat.go:96.2,97.10 2 0 -github.com/muety/wakapi/models/heartbeat.go:93.16,95.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_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/filters.go:17.56,18.16 1 0 github.com/muety/wakapi/models/filters.go:32.2,32.19 1 0 github.com/muety/wakapi/models/filters.go:19.22,20.32 1 0 @@ -171,19 +147,121 @@ github.com/muety/wakapi/models/filters.go:44.28,46.3 1 0 github.com/muety/wakapi/models/filters.go:46.8,46.26 1 1 github.com/muety/wakapi/models/filters.go:46.26,48.3 1 0 github.com/muety/wakapi/models/models.go:3.14,5.2 0 1 -github.com/muety/wakapi/models/alias.go:12.32,14.2 1 0 -github.com/muety/wakapi/models/alias.go:16.37,17.35 1 0 -github.com/muety/wakapi/models/alias.go:22.2,22.14 1 0 -github.com/muety/wakapi/models/alias.go:17.35,18.18 1 0 -github.com/muety/wakapi/models/alias.go:18.18,20.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/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/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 +github.com/muety/wakapi/models/shared.go:42.16,44.3 1 0 +github.com/muety/wakapi/models/shared.go:50.52,56.22 2 0 +github.com/muety/wakapi/models/shared.go:71.2,74.12 3 0 +github.com/muety/wakapi/models/shared.go:57.14,61.17 2 0 +github.com/muety/wakapi/models/shared.go:64.17,66.8 2 0 +github.com/muety/wakapi/models/shared.go:67.10,68.64 1 0 +github.com/muety/wakapi/models/shared.go:61.17,63.4 1 0 +github.com/muety/wakapi/models/shared.go:77.51,80.2 2 0 +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/heartbeat.go:32.34,34.2 1 1 +github.com/muety/wakapi/models/heartbeat.go:36.65,38.46 2 1 +github.com/muety/wakapi/models/heartbeat.go:38.46,39.108 1 1 +github.com/muety/wakapi/models/heartbeat.go:39.108,42.4 2 1 +github.com/muety/wakapi/models/heartbeat.go:46.50,47.11 1 1 +github.com/muety/wakapi/models/heartbeat.go:60.2,60.15 1 1 +github.com/muety/wakapi/models/heartbeat.go:64.2,64.12 1 1 +github.com/muety/wakapi/models/heartbeat.go:48.22,49.18 1 1 +github.com/muety/wakapi/models/heartbeat.go:50.21,51.17 1 1 +github.com/muety/wakapi/models/heartbeat.go:52.23,53.19 1 1 +github.com/muety/wakapi/models/heartbeat.go:54.17,55.26 1 1 +github.com/muety/wakapi/models/heartbeat.go:56.22,57.18 1 1 +github.com/muety/wakapi/models/heartbeat.go:60.15,62.3 1 1 +github.com/muety/wakapi/models/heartbeat.go:67.37,83.2 1 0 +github.com/muety/wakapi/models/heartbeat.go:91.41,93.16 2 0 +github.com/muety/wakapi/models/heartbeat.go:96.2,97.10 2 0 +github.com/muety/wakapi/models/heartbeat.go:93.16,95.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:19.91,25.2 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:27.90,30.2 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:32.90,35.2 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:37.71,38.71 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:38.71,40.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:43.107,47.16 3 0 +github.com/muety/wakapi/middlewares/authenticate.go:51.2,51.31 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:67.2,68.12 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:47.16,49.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:51.31,52.31 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:57.3,57.29 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:64.3,64.9 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:52.31,55.4 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:57.29,60.4 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:60.9,63.4 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:71.70,72.39 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:77.2,77.14 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:72.39,73.60 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:73.60,75.4 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:80.92,82.16 2 1 +github.com/muety/wakapi/middlewares/authenticate.go:86.2,89.16 4 1 +github.com/muety/wakapi/middlewares/authenticate.go:92.2,92.18 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:82.16,84.3 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:89.16,91.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:95.92,97.16 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:101.2,102.16 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:109.2,109.18 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:97.16,99.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:102.16,104.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/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/config/config.go:150.70,152.2 1 0 github.com/muety/wakapi/config/config.go:154.65,156.2 1 0 github.com/muety/wakapi/config/config.go:158.82,168.2 1 0 @@ -273,8 +351,8 @@ 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:20.13,22.2 1 1 -github.com/muety/wakapi/config/eventbus.go:24.26,26.2 1 0 +github.com/muety/wakapi/config/eventbus.go:25.13,27.2 1 1 +github.com/muety/wakapi/config/eventbus.go:29.26,31.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 @@ -311,6 +389,11 @@ 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 @@ -324,6 +407,38 @@ 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.36 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.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/filesystem.go:14.68,16.16 2 0 github.com/muety/wakapi/utils/filesystem.go:20.2,21.15 2 0 github.com/muety/wakapi/utils/filesystem.go:33.2,33.15 1 0 @@ -332,11 +447,41 @@ github.com/muety/wakapi/utils/filesystem.go:21.15,23.47 2 0 github.com/muety/wakapi/utils/filesystem.go:23.47,25.23 2 0 github.com/muety/wakapi/utils/filesystem.go:29.4,29.19 1 0 github.com/muety/wakapi/utils/filesystem.go:25.23,27.5 1 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 +github.com/muety/wakapi/utils/auth.go:33.2,34.32 2 0 +github.com/muety/wakapi/utils/auth.go:18.54,20.3 1 0 +github.com/muety/wakapi/utils/auth.go:24.16,26.3 1 0 +github.com/muety/wakapi/utils/auth.go:30.45,32.3 1 0 +github.com/muety/wakapi/utils/auth.go:37.65,39.85 2 0 +github.com/muety/wakapi/utils/auth.go:43.2,44.30 2 0 +github.com/muety/wakapi/utils/auth.go:39.85,41.3 1 0 +github.com/muety/wakapi/utils/auth.go:47.94,49.16 2 0 +github.com/muety/wakapi/utils/auth.go:53.2,53.107 1 0 +github.com/muety/wakapi/utils/auth.go:57.2,57.22 1 0 +github.com/muety/wakapi/utils/auth.go:49.16,51.3 1 0 +github.com/muety/wakapi/utils/auth.go:53.107,55.3 1 0 +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/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 @@ -373,199 +518,96 @@ github.com/muety/wakapi/utils/summary.go:92.17,94.4 1 0 github.com/muety/wakapi/utils/summary.go:107.48,111.51 2 0 github.com/muety/wakapi/utils/summary.go:114.2,114.12 1 0 github.com/muety/wakapi/utils/summary.go:111.51,113.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/template.go:8.41,10.16 2 0 github.com/muety/wakapi/utils/template.go:13.2,13.23 1 0 github.com/muety/wakapi/utils/template.go:10.16,12.3 1 0 github.com/muety/wakapi/utils/template.go:16.37,17.30 1 0 github.com/muety/wakapi/utils/template.go:20.2,20.10 1 0 github.com/muety/wakapi/utils/template.go:17.30,19.3 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 -github.com/muety/wakapi/utils/auth.go:33.2,34.32 2 0 -github.com/muety/wakapi/utils/auth.go:18.54,20.3 1 0 -github.com/muety/wakapi/utils/auth.go:24.16,26.3 1 0 -github.com/muety/wakapi/utils/auth.go:30.45,32.3 1 0 -github.com/muety/wakapi/utils/auth.go:37.65,39.85 2 0 -github.com/muety/wakapi/utils/auth.go:43.2,44.30 2 0 -github.com/muety/wakapi/utils/auth.go:39.85,41.3 1 0 -github.com/muety/wakapi/utils/auth.go:47.94,49.16 2 0 -github.com/muety/wakapi/utils/auth.go:53.2,53.107 1 0 -github.com/muety/wakapi/utils/auth.go:57.2,57.22 1 0 -github.com/muety/wakapi/utils/auth.go:49.16,51.3 1 0 -github.com/muety/wakapi/utils/auth.go:53.107,55.3 1 0 -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/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.36 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.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/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/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:19.91,25.2 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:27.90,30.2 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:32.90,35.2 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:37.71,38.71 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:38.71,40.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:43.107,47.16 3 0 -github.com/muety/wakapi/middlewares/authenticate.go:51.2,51.31 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:67.2,68.12 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:47.16,49.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:51.31,52.31 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:57.3,57.29 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:64.3,64.9 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:52.31,55.4 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:57.29,60.4 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:60.9,63.4 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:71.70,72.39 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:77.2,77.14 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:72.39,73.60 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:73.60,75.4 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:80.92,82.16 2 1 -github.com/muety/wakapi/middlewares/authenticate.go:86.2,89.16 4 1 -github.com/muety/wakapi/middlewares/authenticate.go:92.2,92.18 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:82.16,84.3 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:89.16,91.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:95.92,97.16 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:101.2,102.16 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:109.2,109.18 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:97.16,99.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:102.16,104.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/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/services/user.go:22.73,29.2 1 0 -github.com/muety/wakapi/services/user.go:31.74,32.40 1 0 -github.com/muety/wakapi/services/user.go:36.2,37.16 2 0 -github.com/muety/wakapi/services/user.go:41.2,42.15 2 0 -github.com/muety/wakapi/services/user.go:32.40,34.3 1 0 -github.com/muety/wakapi/services/user.go:37.16,39.3 1 0 -github.com/muety/wakapi/services/user.go:45.72,46.37 1 0 -github.com/muety/wakapi/services/user.go:50.2,51.16 2 0 -github.com/muety/wakapi/services/user.go:55.2,56.15 2 0 -github.com/muety/wakapi/services/user.go:46.37,48.3 1 0 -github.com/muety/wakapi/services/user.go:51.16,53.3 1 0 -github.com/muety/wakapi/services/user.go:59.76,61.2 1 0 -github.com/muety/wakapi/services/user.go:63.86,65.2 1 0 -github.com/muety/wakapi/services/user.go:67.58,69.2 1 0 -github.com/muety/wakapi/services/user.go:71.86,73.2 1 0 -github.com/muety/wakapi/services/user.go:75.71,77.12 2 0 -github.com/muety/wakapi/services/user.go:81.2,82.42 2 0 -github.com/muety/wakapi/services/user.go:86.2,87.16 2 0 -github.com/muety/wakapi/services/user.go:91.2,92.21 2 0 -github.com/muety/wakapi/services/user.go:77.12,79.3 1 0 -github.com/muety/wakapi/services/user.go:82.42,84.3 1 0 -github.com/muety/wakapi/services/user.go:87.16,89.3 1 0 -github.com/muety/wakapi/services/user.go:95.48,97.2 1 0 -github.com/muety/wakapi/services/user.go:99.102,109.93 2 0 -github.com/muety/wakapi/services/user.go:115.2,115.38 1 0 -github.com/muety/wakapi/services/user.go:109.93,111.3 1 0 -github.com/muety/wakapi/services/user.go:111.8,113.3 1 0 -github.com/muety/wakapi/services/user.go:118.73,122.2 3 0 -github.com/muety/wakapi/services/user.go:124.78,128.2 3 0 -github.com/muety/wakapi/services/user.go:130.99,133.2 2 0 -github.com/muety/wakapi/services/user.go:135.106,138.96 3 0 -github.com/muety/wakapi/services/user.go:143.2,143.68 1 0 -github.com/muety/wakapi/services/user.go:138.96,140.3 1 0 -github.com/muety/wakapi/services/user.go:140.8,142.3 1 0 -github.com/muety/wakapi/services/user.go:146.85,148.2 1 0 -github.com/muety/wakapi/services/user.go:150.57,157.2 4 0 -github.com/muety/wakapi/services/user.go:159.38,161.2 1 0 -github.com/muety/wakapi/services/user.go:163.57,168.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:25.141,39.33 3 0 +github.com/muety/wakapi/services/heartbeat.go:47.2,47.12 1 0 +github.com/muety/wakapi/services/heartbeat.go:39.33,40.31 1 0 +github.com/muety/wakapi/services/heartbeat.go:40.31,44.4 3 0 +github.com/muety/wakapi/services/heartbeat.go:50.72,53.2 2 0 +github.com/muety/wakapi/services/heartbeat.go:55.80,60.32 3 0 +github.com/muety/wakapi/services/heartbeat.go:68.2,69.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:72.2,72.12 1 0 +github.com/muety/wakapi/services/heartbeat.go:60.32,61.36 1 0 +github.com/muety/wakapi/services/heartbeat.go:65.3,65.43 1 0 +github.com/muety/wakapi/services/heartbeat.go:61.36,64.4 2 0 +github.com/muety/wakapi/services/heartbeat.go:69.16,71.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:75.53,77.8 2 0 +github.com/muety/wakapi/services/heartbeat.go:80.2,81.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:84.2,84.19 1 0 +github.com/muety/wakapi/services/heartbeat.go:77.8,79.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:81.16,83.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:87.76,90.8 3 0 +github.com/muety/wakapi/services/heartbeat.go:93.2,94.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:97.2,97.19 1 0 +github.com/muety/wakapi/services/heartbeat.go:90.8,92.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:94.16,96.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:100.96,104.26 3 0 +github.com/muety/wakapi/services/heartbeat.go:114.2,115.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:119.2,119.28 1 0 +github.com/muety/wakapi/services/heartbeat.go:125.2,125.24 1 0 +github.com/muety/wakapi/services/heartbeat.go:104.26,107.9 3 0 +github.com/muety/wakapi/services/heartbeat.go:107.9,109.4 1 0 +github.com/muety/wakapi/services/heartbeat.go:109.9,111.4 1 0 +github.com/muety/wakapi/services/heartbeat.go:115.16,117.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:119.28,123.3 3 0 +github.com/muety/wakapi/services/heartbeat.go:128.111,130.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:133.2,133.43 1 0 +github.com/muety/wakapi/services/heartbeat.go:130.16,132.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:136.92,138.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:140.116,142.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:144.78,146.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:148.104,150.55 2 0 +github.com/muety/wakapi/services/heartbeat.go:154.2,155.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:159.2,160.28 2 0 +github.com/muety/wakapi/services/heartbeat.go:166.2,167.22 2 0 +github.com/muety/wakapi/services/heartbeat.go:150.55,152.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:155.16,157.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:160.28,161.33 1 0 +github.com/muety/wakapi/services/heartbeat.go:161.33,163.4 1 0 +github.com/muety/wakapi/services/heartbeat.go:170.62,172.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:174.116,176.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:180.2,180.28 1 0 +github.com/muety/wakapi/services/heartbeat.go:184.2,184.24 1 0 +github.com/muety/wakapi/services/heartbeat.go:176.16,178.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:180.28,182.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:187.96,189.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:191.107,193.56 2 0 +github.com/muety/wakapi/services/heartbeat.go:193.56,194.58 1 0 +github.com/muety/wakapi/services/heartbeat.go:194.58,198.4 1 0 +github.com/muety/wakapi/services/heartbeat.go:202.85,208.2 5 0 +github.com/muety/wakapi/services/heartbeat.go:210.74,211.32 1 0 +github.com/muety/wakapi/services/heartbeat.go:211.32,216.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:219.72,221.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:223.58,225.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:227.60,229.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 +github.com/muety/wakapi/services/language_mapping.go:35.2,36.16 2 0 +github.com/muety/wakapi/services/language_mapping.go:39.2,40.22 2 0 +github.com/muety/wakapi/services/language_mapping.go:31.53,33.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:36.16,38.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:43.92,46.16 3 0 +github.com/muety/wakapi/services/language_mapping.go:50.2,50.33 1 0 +github.com/muety/wakapi/services/language_mapping.go:53.2,53.22 1 0 +github.com/muety/wakapi/services/language_mapping.go:46.16,48.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:50.33,52.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:56.109,58.16 2 0 +github.com/muety/wakapi/services/language_mapping.go:62.2,63.20 2 0 +github.com/muety/wakapi/services/language_mapping.go:58.16,60.3 1 0 +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 @@ -587,6 +629,29 @@ github.com/muety/wakapi/services/misc.go:98.116,99.24 1 0 github.com/muety/wakapi/services/misc.go:99.24,100.151 1 0 github.com/muety/wakapi/services/misc.go:100.151,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 +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:46.108,49.16 3 0 +github.com/muety/wakapi/services/project_label.go:53.2,53.31 1 0 +github.com/muety/wakapi/services/project_label.go:61.2,61.20 1 0 +github.com/muety/wakapi/services/project_label.go:49.16,51.3 1 0 +github.com/muety/wakapi/services/project_label.go:53.31,54.41 1 0 +github.com/muety/wakapi/services/project_label.go:54.41,56.4 1 0 +github.com/muety/wakapi/services/project_label.go:56.9,58.4 1 0 +github.com/muety/wakapi/services/project_label.go:64.98,66.16 2 0 +github.com/muety/wakapi/services/project_label.go:70.2,72.20 3 0 +github.com/muety/wakapi/services/project_label.go:66.16,68.3 1 0 +github.com/muety/wakapi/services/project_label.go:75.74,76.24 1 0 +github.com/muety/wakapi/services/project_label.go:79.2,82.12 4 0 +github.com/muety/wakapi/services/project_label.go:76.24,78.3 1 0 +github.com/muety/wakapi/services/project_label.go:85.89,87.14 2 0 +github.com/muety/wakapi/services/project_label.go:90.2,93.4 1 0 +github.com/muety/wakapi/services/project_label.go:87.14,89.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 @@ -615,152 +680,118 @@ github.com/muety/wakapi/services/report.go:140.2,140.12 1 0 github.com/muety/wakapi/services/report.go:133.41,134.30 1 0 github.com/muety/wakapi/services/report.go:134.30,135.16 1 0 github.com/muety/wakapi/services/report.go:135.16,137.5 1 0 -github.com/muety/wakapi/services/summary.go:29.191,38.2 1 1 -github.com/muety/wakapi/services/summary.go:42.136,45.66 2 1 -github.com/muety/wakapi/services/summary.go:50.2,50.44 1 1 -github.com/muety/wakapi/services/summary.go:56.2,56.65 1 1 -github.com/muety/wakapi/services/summary.go:61.2,62.16 2 1 -github.com/muety/wakapi/services/summary.go:67.2,72.30 5 1 -github.com/muety/wakapi/services/summary.go:45.66,47.3 1 0 -github.com/muety/wakapi/services/summary.go:50.44,53.3 2 1 -github.com/muety/wakapi/services/summary.go:56.65,58.3 1 0 -github.com/muety/wakapi/services/summary.go:62.16,64.3 1 0 -github.com/muety/wakapi/services/summary.go:75.101,78.16 2 1 -github.com/muety/wakapi/services/summary.go:83.2,84.44 2 1 -github.com/muety/wakapi/services/summary.go:93.2,94.16 2 1 -github.com/muety/wakapi/services/summary.go:97.2,99.30 2 1 -github.com/muety/wakapi/services/summary.go:78.16,80.3 1 0 -github.com/muety/wakapi/services/summary.go:84.44,85.78 1 1 -github.com/muety/wakapi/services/summary.go:85.78,87.4 1 1 -github.com/muety/wakapi/services/summary.go:87.9,89.4 1 0 -github.com/muety/wakapi/services/summary.go:94.16,96.3 1 0 -github.com/muety/wakapi/services/summary.go:102.102,105.89 2 1 -github.com/muety/wakapi/services/summary.go:111.2,115.26 4 1 -github.com/muety/wakapi/services/summary.go:120.2,126.34 6 1 -github.com/muety/wakapi/services/summary.go:142.2,142.26 1 1 -github.com/muety/wakapi/services/summary.go:147.2,159.30 3 1 -github.com/muety/wakapi/services/summary.go:105.89,107.3 1 1 -github.com/muety/wakapi/services/summary.go:107.8,109.3 1 0 -github.com/muety/wakapi/services/summary.go:115.26,117.3 1 1 -github.com/muety/wakapi/services/summary.go:126.34,128.20 2 1 -github.com/muety/wakapi/services/summary.go:129.30,130.29 1 1 -github.com/muety/wakapi/services/summary.go:131.31,132.30 1 1 -github.com/muety/wakapi/services/summary.go:133.29,134.28 1 1 -github.com/muety/wakapi/services/summary.go:135.25,136.24 1 1 -github.com/muety/wakapi/services/summary.go:137.30,138.29 1 1 -github.com/muety/wakapi/services/summary.go:142.26,145.3 2 1 -github.com/muety/wakapi/services/summary.go:164.76,166.2 1 0 -github.com/muety/wakapi/services/summary.go:168.62,171.2 2 0 -github.com/muety/wakapi/services/summary.go:173.66,176.2 2 0 -github.com/muety/wakapi/services/summary.go:180.127,183.31 2 1 -github.com/muety/wakapi/services/summary.go:206.2,207.30 2 1 -github.com/muety/wakapi/services/summary.go:215.2,215.40 1 1 -github.com/muety/wakapi/services/summary.go:219.2,219.67 1 1 -github.com/muety/wakapi/services/summary.go:183.31,186.35 2 1 -github.com/muety/wakapi/services/summary.go:190.3,190.13 1 1 -github.com/muety/wakapi/services/summary.go:194.3,199.27 2 1 -github.com/muety/wakapi/services/summary.go:203.3,203.26 1 1 -github.com/muety/wakapi/services/summary.go:186.35,188.4 1 1 -github.com/muety/wakapi/services/summary.go:190.13,191.12 1 1 -github.com/muety/wakapi/services/summary.go:199.27,202.4 2 1 -github.com/muety/wakapi/services/summary.go:207.30,213.3 1 1 -github.com/muety/wakapi/services/summary.go:215.40,217.3 1 1 -github.com/muety/wakapi/services/summary.go:222.87,223.72 1 1 -github.com/muety/wakapi/services/summary.go:231.2,232.16 2 1 -github.com/muety/wakapi/services/summary.go:237.2,238.37 2 1 -github.com/muety/wakapi/services/summary.go:242.2,244.30 3 1 -github.com/muety/wakapi/services/summary.go:255.2,256.29 2 1 -github.com/muety/wakapi/services/summary.go:261.2,262.16 2 1 -github.com/muety/wakapi/services/summary.go:223.72,229.3 1 1 -github.com/muety/wakapi/services/summary.go:232.16,235.3 2 0 -github.com/muety/wakapi/services/summary.go:238.37,240.3 1 1 -github.com/muety/wakapi/services/summary.go:244.30,245.48 1 1 -github.com/muety/wakapi/services/summary.go:245.48,246.41 1 1 -github.com/muety/wakapi/services/summary.go:249.4,250.29 2 1 -github.com/muety/wakapi/services/summary.go:246.41,248.5 1 1 -github.com/muety/wakapi/services/summary.go:256.29,257.18 1 1 -github.com/muety/wakapi/services/summary.go:257.18,259.4 1 1 -github.com/muety/wakapi/services/summary.go:265.97,266.24 1 1 -github.com/muety/wakapi/services/summary.go:270.2,285.30 5 1 -github.com/muety/wakapi/services/summary.go:314.2,317.26 3 1 -github.com/muety/wakapi/services/summary.go:266.24,268.3 1 0 -github.com/muety/wakapi/services/summary.go:285.30,287.41 2 1 -github.com/muety/wakapi/services/summary.go:292.3,292.38 1 1 -github.com/muety/wakapi/services/summary.go:296.3,296.37 1 1 -github.com/muety/wakapi/services/summary.go:300.3,300.34 1 1 -github.com/muety/wakapi/services/summary.go:304.3,311.25 7 1 -github.com/muety/wakapi/services/summary.go:287.41,289.12 2 1 -github.com/muety/wakapi/services/summary.go:292.38,294.4 1 0 -github.com/muety/wakapi/services/summary.go:296.37,298.4 1 1 -github.com/muety/wakapi/services/summary.go:300.34,302.4 1 1 -github.com/muety/wakapi/services/summary.go:320.127,324.32 2 1 -github.com/muety/wakapi/services/summary.go:328.2,328.27 1 1 -github.com/muety/wakapi/services/summary.go:336.2,338.26 3 1 -github.com/muety/wakapi/services/summary.go:343.2,343.43 1 1 -github.com/muety/wakapi/services/summary.go:347.2,347.17 1 1 -github.com/muety/wakapi/services/summary.go:324.32,326.3 1 1 -github.com/muety/wakapi/services/summary.go:328.27,329.37 1 1 -github.com/muety/wakapi/services/summary.go:329.37,331.4 1 1 -github.com/muety/wakapi/services/summary.go:331.9,333.4 1 1 -github.com/muety/wakapi/services/summary.go:338.26,341.3 2 1 -github.com/muety/wakapi/services/summary.go:343.43,345.3 1 1 -github.com/muety/wakapi/services/summary.go:350.116,351.25 1 1 -github.com/muety/wakapi/services/summary.go:355.2,358.44 2 1 -github.com/muety/wakapi/services/summary.go:363.2,363.40 1 1 -github.com/muety/wakapi/services/summary.go:388.2,388.54 1 1 -github.com/muety/wakapi/services/summary.go:392.2,392.18 1 1 -github.com/muety/wakapi/services/summary.go:351.25,353.3 1 0 -github.com/muety/wakapi/services/summary.go:358.44,360.3 1 1 -github.com/muety/wakapi/services/summary.go:363.40,365.19 2 1 -github.com/muety/wakapi/services/summary.go:372.3,377.34 3 1 -github.com/muety/wakapi/services/summary.go:382.3,382.22 1 1 -github.com/muety/wakapi/services/summary.go:365.19,366.12 1 1 -github.com/muety/wakapi/services/summary.go:377.34,379.4 1 1 -github.com/muety/wakapi/services/summary.go:382.22,384.4 1 1 -github.com/muety/wakapi/services/summary.go:388.54,390.3 1 1 -github.com/muety/wakapi/services/summary.go:395.59,397.2 1 1 -github.com/muety/wakapi/services/summary.go:399.63,400.37 1 0 -github.com/muety/wakapi/services/summary.go:400.37,401.36 1 0 -github.com/muety/wakapi/services/summary.go:401.36,403.4 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 -github.com/muety/wakapi/services/language_mapping.go:35.2,36.16 2 0 -github.com/muety/wakapi/services/language_mapping.go:39.2,40.22 2 0 -github.com/muety/wakapi/services/language_mapping.go:31.53,33.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:36.16,38.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:43.92,46.16 3 0 -github.com/muety/wakapi/services/language_mapping.go:50.2,50.33 1 0 -github.com/muety/wakapi/services/language_mapping.go:53.2,53.22 1 0 -github.com/muety/wakapi/services/language_mapping.go:46.16,48.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:50.33,52.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:56.109,58.16 2 0 -github.com/muety/wakapi/services/language_mapping.go:62.2,63.20 2 0 -github.com/muety/wakapi/services/language_mapping.go:58.16,60.3 1 0 -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:18.111,24.2 1 0 -github.com/muety/wakapi/services/project_label.go:26.80,28.2 1 0 -github.com/muety/wakapi/services/project_label.go:30.90,31.51 1 0 -github.com/muety/wakapi/services/project_label.go:35.2,36.16 2 0 -github.com/muety/wakapi/services/project_label.go:39.2,40.20 2 0 -github.com/muety/wakapi/services/project_label.go:31.51,33.3 1 0 -github.com/muety/wakapi/services/project_label.go:36.16,38.3 1 0 -github.com/muety/wakapi/services/project_label.go:43.108,46.16 3 0 -github.com/muety/wakapi/services/project_label.go:50.2,50.31 1 0 -github.com/muety/wakapi/services/project_label.go:58.2,58.20 1 0 -github.com/muety/wakapi/services/project_label.go:46.16,48.3 1 0 -github.com/muety/wakapi/services/project_label.go:50.31,51.41 1 0 -github.com/muety/wakapi/services/project_label.go:51.41,53.4 1 0 -github.com/muety/wakapi/services/project_label.go:53.9,55.4 1 0 -github.com/muety/wakapi/services/project_label.go:61.98,63.16 2 0 -github.com/muety/wakapi/services/project_label.go:67.2,68.20 2 0 -github.com/muety/wakapi/services/project_label.go:63.16,65.3 1 0 -github.com/muety/wakapi/services/project_label.go:71.74,72.24 1 0 -github.com/muety/wakapi/services/project_label.go:75.2,77.12 3 0 -github.com/muety/wakapi/services/project_label.go:72.24,74.3 1 0 +github.com/muety/wakapi/services/summary.go:32.191,44.33 3 1 +github.com/muety/wakapi/services/summary.go:55.2,55.12 1 1 +github.com/muety/wakapi/services/summary.go:44.33,45.31 1 1 +github.com/muety/wakapi/services/summary.go:45.31,47.39 2 0 +github.com/muety/wakapi/services/summary.go:47.39,48.71 1 0 +github.com/muety/wakapi/services/summary.go:48.71,50.6 1 0 +github.com/muety/wakapi/services/summary.go:61.136,64.66 2 1 +github.com/muety/wakapi/services/summary.go:69.2,69.44 1 1 +github.com/muety/wakapi/services/summary.go:75.2,75.65 1 1 +github.com/muety/wakapi/services/summary.go:80.2,81.16 2 1 +github.com/muety/wakapi/services/summary.go:86.2,92.30 6 1 +github.com/muety/wakapi/services/summary.go:64.66,66.3 1 0 +github.com/muety/wakapi/services/summary.go:69.44,72.3 2 1 +github.com/muety/wakapi/services/summary.go:75.65,77.3 1 0 +github.com/muety/wakapi/services/summary.go:81.16,83.3 1 0 +github.com/muety/wakapi/services/summary.go:95.101,98.16 2 1 +github.com/muety/wakapi/services/summary.go:103.2,104.44 2 1 +github.com/muety/wakapi/services/summary.go:113.2,114.16 2 1 +github.com/muety/wakapi/services/summary.go:118.2,118.30 1 1 +github.com/muety/wakapi/services/summary.go:98.16,100.3 1 0 +github.com/muety/wakapi/services/summary.go:104.44,105.78 1 1 +github.com/muety/wakapi/services/summary.go:105.78,107.4 1 1 +github.com/muety/wakapi/services/summary.go:107.9,109.4 1 0 +github.com/muety/wakapi/services/summary.go:114.16,116.3 1 0 +github.com/muety/wakapi/services/summary.go:121.102,124.89 2 1 +github.com/muety/wakapi/services/summary.go:130.2,134.26 4 1 +github.com/muety/wakapi/services/summary.go:139.2,145.34 6 1 +github.com/muety/wakapi/services/summary.go:161.2,161.26 1 1 +github.com/muety/wakapi/services/summary.go:166.2,177.30 2 1 +github.com/muety/wakapi/services/summary.go:124.89,126.3 1 1 +github.com/muety/wakapi/services/summary.go:126.8,128.3 1 0 +github.com/muety/wakapi/services/summary.go:134.26,136.3 1 1 +github.com/muety/wakapi/services/summary.go:145.34,147.20 2 1 +github.com/muety/wakapi/services/summary.go:148.30,149.29 1 1 +github.com/muety/wakapi/services/summary.go:150.31,151.30 1 1 +github.com/muety/wakapi/services/summary.go:152.29,153.28 1 1 +github.com/muety/wakapi/services/summary.go:154.25,155.24 1 1 +github.com/muety/wakapi/services/summary.go:156.30,157.29 1 1 +github.com/muety/wakapi/services/summary.go:161.26,164.3 2 1 +github.com/muety/wakapi/services/summary.go:182.76,184.2 1 0 +github.com/muety/wakapi/services/summary.go:186.62,189.2 2 0 +github.com/muety/wakapi/services/summary.go:191.66,194.2 2 0 +github.com/muety/wakapi/services/summary.go:198.127,201.31 2 1 +github.com/muety/wakapi/services/summary.go:224.2,225.30 2 1 +github.com/muety/wakapi/services/summary.go:233.2,233.40 1 1 +github.com/muety/wakapi/services/summary.go:237.2,237.67 1 1 +github.com/muety/wakapi/services/summary.go:201.31,204.35 2 1 +github.com/muety/wakapi/services/summary.go:208.3,208.13 1 1 +github.com/muety/wakapi/services/summary.go:212.3,217.27 2 1 +github.com/muety/wakapi/services/summary.go:221.3,221.26 1 1 +github.com/muety/wakapi/services/summary.go:204.35,206.4 1 1 +github.com/muety/wakapi/services/summary.go:208.13,209.12 1 1 +github.com/muety/wakapi/services/summary.go:217.27,220.4 2 1 +github.com/muety/wakapi/services/summary.go:225.30,231.3 1 1 +github.com/muety/wakapi/services/summary.go:233.40,235.3 1 1 +github.com/muety/wakapi/services/summary.go:240.87,241.72 1 1 +github.com/muety/wakapi/services/summary.go:249.2,250.16 2 1 +github.com/muety/wakapi/services/summary.go:255.2,256.37 2 1 +github.com/muety/wakapi/services/summary.go:260.2,262.30 3 1 +github.com/muety/wakapi/services/summary.go:273.2,274.29 2 1 +github.com/muety/wakapi/services/summary.go:279.2,280.16 2 1 +github.com/muety/wakapi/services/summary.go:241.72,247.3 1 0 +github.com/muety/wakapi/services/summary.go:250.16,253.3 2 0 +github.com/muety/wakapi/services/summary.go:256.37,258.3 1 1 +github.com/muety/wakapi/services/summary.go:262.30,263.48 1 0 +github.com/muety/wakapi/services/summary.go:263.48,264.41 1 0 +github.com/muety/wakapi/services/summary.go:267.4,268.29 2 0 +github.com/muety/wakapi/services/summary.go:264.41,266.5 1 0 +github.com/muety/wakapi/services/summary.go:274.29,275.18 1 0 +github.com/muety/wakapi/services/summary.go:275.18,277.4 1 0 +github.com/muety/wakapi/services/summary.go:283.97,284.24 1 1 +github.com/muety/wakapi/services/summary.go:288.2,303.30 5 1 +github.com/muety/wakapi/services/summary.go:332.2,335.26 3 1 +github.com/muety/wakapi/services/summary.go:284.24,286.3 1 0 +github.com/muety/wakapi/services/summary.go:303.30,305.41 2 1 +github.com/muety/wakapi/services/summary.go:310.3,310.38 1 1 +github.com/muety/wakapi/services/summary.go:314.3,314.37 1 1 +github.com/muety/wakapi/services/summary.go:318.3,318.34 1 1 +github.com/muety/wakapi/services/summary.go:322.3,329.25 7 1 +github.com/muety/wakapi/services/summary.go:305.41,307.12 2 1 +github.com/muety/wakapi/services/summary.go:310.38,312.4 1 0 +github.com/muety/wakapi/services/summary.go:314.37,316.4 1 1 +github.com/muety/wakapi/services/summary.go:318.34,320.4 1 1 +github.com/muety/wakapi/services/summary.go:338.127,342.32 2 1 +github.com/muety/wakapi/services/summary.go:346.2,346.27 1 1 +github.com/muety/wakapi/services/summary.go:354.2,356.26 3 1 +github.com/muety/wakapi/services/summary.go:361.2,361.43 1 1 +github.com/muety/wakapi/services/summary.go:365.2,365.17 1 1 +github.com/muety/wakapi/services/summary.go:342.32,344.3 1 1 +github.com/muety/wakapi/services/summary.go:346.27,347.37 1 1 +github.com/muety/wakapi/services/summary.go:347.37,349.4 1 1 +github.com/muety/wakapi/services/summary.go:349.9,351.4 1 1 +github.com/muety/wakapi/services/summary.go:356.26,359.3 2 1 +github.com/muety/wakapi/services/summary.go:361.43,363.3 1 1 +github.com/muety/wakapi/services/summary.go:368.116,369.25 1 1 +github.com/muety/wakapi/services/summary.go:373.2,376.44 2 1 +github.com/muety/wakapi/services/summary.go:381.2,381.40 1 1 +github.com/muety/wakapi/services/summary.go:406.2,406.54 1 1 +github.com/muety/wakapi/services/summary.go:410.2,410.18 1 1 +github.com/muety/wakapi/services/summary.go:369.25,371.3 1 0 +github.com/muety/wakapi/services/summary.go:376.44,378.3 1 1 +github.com/muety/wakapi/services/summary.go:381.40,383.19 2 1 +github.com/muety/wakapi/services/summary.go:390.3,395.34 3 1 +github.com/muety/wakapi/services/summary.go:400.3,400.22 1 1 +github.com/muety/wakapi/services/summary.go:383.19,384.12 1 1 +github.com/muety/wakapi/services/summary.go:395.34,397.4 1 1 +github.com/muety/wakapi/services/summary.go:400.22,402.4 1 1 +github.com/muety/wakapi/services/summary.go:406.54,408.3 1 1 +github.com/muety/wakapi/services/summary.go:413.59,415.2 1 1 +github.com/muety/wakapi/services/summary.go:417.63,418.37 1 0 +github.com/muety/wakapi/services/summary.go:418.37,419.36 1 0 +github.com/muety/wakapi/services/summary.go:419.36,421.4 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 @@ -846,67 +877,44 @@ github.com/muety/wakapi/services/alias.go:95.21,97.4 1 0 github.com/muety/wakapi/services/alias.go:104.31,106.3 1 0 github.com/muety/wakapi/services/alias.go:111.52,112.51 1 0 github.com/muety/wakapi/services/alias.go:112.51,114.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:25.141,39.33 3 0 -github.com/muety/wakapi/services/heartbeat.go:47.2,47.12 1 0 -github.com/muety/wakapi/services/heartbeat.go:39.33,40.31 1 0 -github.com/muety/wakapi/services/heartbeat.go:40.31,44.4 3 0 -github.com/muety/wakapi/services/heartbeat.go:50.72,53.2 2 0 -github.com/muety/wakapi/services/heartbeat.go:55.80,60.32 3 0 -github.com/muety/wakapi/services/heartbeat.go:68.2,69.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:72.2,72.12 1 0 -github.com/muety/wakapi/services/heartbeat.go:60.32,61.36 1 0 -github.com/muety/wakapi/services/heartbeat.go:65.3,65.43 1 0 -github.com/muety/wakapi/services/heartbeat.go:61.36,64.4 2 0 -github.com/muety/wakapi/services/heartbeat.go:69.16,71.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:75.53,77.8 2 0 -github.com/muety/wakapi/services/heartbeat.go:80.2,81.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:84.2,84.19 1 0 -github.com/muety/wakapi/services/heartbeat.go:77.8,79.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:81.16,83.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:87.76,90.8 3 0 -github.com/muety/wakapi/services/heartbeat.go:93.2,94.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:97.2,97.19 1 0 -github.com/muety/wakapi/services/heartbeat.go:90.8,92.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:94.16,96.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:100.96,104.26 3 0 -github.com/muety/wakapi/services/heartbeat.go:114.2,115.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:119.2,119.28 1 0 -github.com/muety/wakapi/services/heartbeat.go:125.2,125.24 1 0 -github.com/muety/wakapi/services/heartbeat.go:104.26,107.9 3 0 -github.com/muety/wakapi/services/heartbeat.go:107.9,109.4 1 0 -github.com/muety/wakapi/services/heartbeat.go:109.9,111.4 1 0 -github.com/muety/wakapi/services/heartbeat.go:115.16,117.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:119.28,123.3 3 0 -github.com/muety/wakapi/services/heartbeat.go:128.111,130.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:133.2,133.43 1 0 -github.com/muety/wakapi/services/heartbeat.go:130.16,132.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:136.92,138.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:140.116,142.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:144.78,146.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:148.104,150.55 2 0 -github.com/muety/wakapi/services/heartbeat.go:154.2,155.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:159.2,160.28 2 0 -github.com/muety/wakapi/services/heartbeat.go:166.2,167.22 2 0 -github.com/muety/wakapi/services/heartbeat.go:150.55,152.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:155.16,157.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:160.28,161.33 1 0 -github.com/muety/wakapi/services/heartbeat.go:161.33,163.4 1 0 -github.com/muety/wakapi/services/heartbeat.go:170.62,172.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:174.116,176.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:180.2,180.28 1 0 -github.com/muety/wakapi/services/heartbeat.go:184.2,184.24 1 0 -github.com/muety/wakapi/services/heartbeat.go:176.16,178.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:180.28,182.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:187.96,189.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:191.107,193.56 2 0 -github.com/muety/wakapi/services/heartbeat.go:193.56,194.58 1 0 -github.com/muety/wakapi/services/heartbeat.go:194.58,198.4 1 0 -github.com/muety/wakapi/services/heartbeat.go:202.85,208.2 5 0 -github.com/muety/wakapi/services/heartbeat.go:210.74,211.32 1 0 -github.com/muety/wakapi/services/heartbeat.go:211.32,216.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:219.72,221.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:223.58,225.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:227.60,229.2 1 0 +github.com/muety/wakapi/services/user.go:22.73,29.2 1 0 +github.com/muety/wakapi/services/user.go:31.74,32.40 1 0 +github.com/muety/wakapi/services/user.go:36.2,37.16 2 0 +github.com/muety/wakapi/services/user.go:41.2,42.15 2 0 +github.com/muety/wakapi/services/user.go:32.40,34.3 1 0 +github.com/muety/wakapi/services/user.go:37.16,39.3 1 0 +github.com/muety/wakapi/services/user.go:45.72,46.37 1 0 +github.com/muety/wakapi/services/user.go:50.2,51.16 2 0 +github.com/muety/wakapi/services/user.go:55.2,56.15 2 0 +github.com/muety/wakapi/services/user.go:46.37,48.3 1 0 +github.com/muety/wakapi/services/user.go:51.16,53.3 1 0 +github.com/muety/wakapi/services/user.go:59.76,61.2 1 0 +github.com/muety/wakapi/services/user.go:63.86,65.2 1 0 +github.com/muety/wakapi/services/user.go:67.58,69.2 1 0 +github.com/muety/wakapi/services/user.go:71.86,73.2 1 0 +github.com/muety/wakapi/services/user.go:75.71,77.12 2 0 +github.com/muety/wakapi/services/user.go:81.2,82.42 2 0 +github.com/muety/wakapi/services/user.go:86.2,87.16 2 0 +github.com/muety/wakapi/services/user.go:91.2,92.21 2 0 +github.com/muety/wakapi/services/user.go:77.12,79.3 1 0 +github.com/muety/wakapi/services/user.go:82.42,84.3 1 0 +github.com/muety/wakapi/services/user.go:87.16,89.3 1 0 +github.com/muety/wakapi/services/user.go:95.48,97.2 1 0 +github.com/muety/wakapi/services/user.go:99.102,109.93 2 0 +github.com/muety/wakapi/services/user.go:115.2,115.38 1 0 +github.com/muety/wakapi/services/user.go:109.93,111.3 1 0 +github.com/muety/wakapi/services/user.go:111.8,113.3 1 0 +github.com/muety/wakapi/services/user.go:118.73,122.2 3 0 +github.com/muety/wakapi/services/user.go:124.78,128.2 3 0 +github.com/muety/wakapi/services/user.go:130.99,133.2 2 0 +github.com/muety/wakapi/services/user.go:135.106,138.96 3 0 +github.com/muety/wakapi/services/user.go:143.2,143.68 1 0 +github.com/muety/wakapi/services/user.go:138.96,140.3 1 0 +github.com/muety/wakapi/services/user.go:140.8,142.3 1 0 +github.com/muety/wakapi/services/user.go:146.85,148.2 1 0 +github.com/muety/wakapi/services/user.go:150.57,157.2 4 0 +github.com/muety/wakapi/services/user.go:159.38,161.2 1 0 +github.com/muety/wakapi/services/user.go:163.57,168.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 diff --git a/services/project_label.go b/services/project_label.go index 418a682..853eaf1 100644 --- a/services/project_label.go +++ b/services/project_label.go @@ -2,6 +2,7 @@ package services import ( "errors" + "github.com/leandro-lugaresi/hub" "github.com/muety/wakapi/config" "github.com/muety/wakapi/models" "github.com/muety/wakapi/repositories" @@ -12,12 +13,14 @@ import ( type ProjectLabelService struct { config *config.Config cache *cache.Cache + eventBus *hub.Hub repository repositories.IProjectLabelRepository } func NewProjectLabelService(projectLabelRepository repositories.IProjectLabelRepository) *ProjectLabelService { return &ProjectLabelService{ config: config.Get(), + eventBus: config.EventBus(), repository: projectLabelRepository, cache: cache.New(24*time.Hour, 24*time.Hour), } @@ -65,6 +68,7 @@ func (srv *ProjectLabelService) Create(label *models.ProjectLabel) (*models.Proj } srv.cache.Delete(result.UserID) + srv.notifyUpdate(label, false) return result, nil } @@ -74,5 +78,17 @@ func (srv *ProjectLabelService) Delete(label *models.ProjectLabel) error { } err := srv.repository.Delete(label.ID) srv.cache.Delete(label.UserID) + srv.notifyUpdate(label, true) return err } + +func (srv *ProjectLabelService) notifyUpdate(label *models.ProjectLabel, isDelete bool) { + name := config.EventProjectLabelCreate + if isDelete { + name = config.EventProjectLabelDelete + } + srv.eventBus.Publish(hub.Message{ + Name: name, + Fields: map[string]interface{}{config.FieldPayload: label, config.FieldUserId: label.UserID}, + }) +} diff --git a/services/summary.go b/services/summary.go index 524f16d..2ccce4e 100644 --- a/services/summary.go +++ b/services/summary.go @@ -2,7 +2,9 @@ package services import ( "errors" + "fmt" "github.com/emvi/logbuch" + "github.com/leandro-lugaresi/hub" "github.com/muety/wakapi/config" "github.com/muety/wakapi/models" "github.com/muety/wakapi/repositories" @@ -18,6 +20,7 @@ const HeartbeatDiffThreshold = 2 * time.Minute type SummaryService struct { config *config.Config cache *cache.Cache + eventBus *hub.Hub repository repositories.ISummaryRepository heartbeatService IHeartbeatService aliasService IAliasService @@ -27,18 +30,34 @@ type SummaryService struct { type SummaryRetriever func(f, t time.Time, u *models.User) (*models.Summary, error) func NewSummaryService(summaryRepo repositories.ISummaryRepository, heartbeatService IHeartbeatService, aliasService IAliasService, projectLabelService IProjectLabelService) *SummaryService { - return &SummaryService{ + srv := &SummaryService{ config: config.Get(), cache: cache.New(24*time.Hour, 24*time.Hour), + eventBus: config.EventBus(), repository: summaryRepo, heartbeatService: heartbeatService, aliasService: aliasService, projectLabelService: projectLabelService, } + + sub1 := srv.eventBus.Subscribe(0, config.TopicProjectLabel) + go func(sub *hub.Subscription) { + for m := range sub.Receiver { + userId := m.Fields[config.FieldUserId].(string) + for key := range srv.cache.Items() { + if strings.HasSuffix(key, fmt.Sprintf("__%s__--aliased", userId)) { + srv.cache.Delete(key) + } + } + } + }(&sub1) + + return srv } // Public summary generation methods +// Aliased retrieves or computes a new summary based on the given SummaryRetriever and augments it with entity aliases and project labels func (srv *SummaryService) Aliased(from, to time.Time, user *models.User, f SummaryRetriever, skipCache bool) (*models.Summary, error) { // Check cache cacheKey := srv.getHash(from.String(), to.String(), user.ID, "--aliased") @@ -65,6 +84,7 @@ func (srv *SummaryService) Aliased(from, to time.Time, user *models.User, f Summ // Post-process summary and cache it summary := s.WithResolvedAliases(resolve) + summary = srv.withProjectLabels(summary) summary.FillBy(models.SummaryProject, models.SummaryLabel) // first fill up labels from projects summary.FillMissing() // then, full up types which are entirely missing @@ -94,7 +114,6 @@ func (srv *SummaryService) Retrieve(from, to time.Time, user *models.User) (*mod if err != nil { return nil, err } - summary = srv.withProjectLabels(summary) return summary.Sorted(), nil } @@ -154,7 +173,6 @@ func (srv *SummaryService) Summarize(from, to time.Time, user *models.User) (*mo OperatingSystems: osItems, Machines: machineItems, } - summary = srv.withProjectLabels(summary) return summary.Sorted(), nil }