diff --git a/coverage/coverage.out b/coverage/coverage.out index 250847d..07f157a 100644 --- a/coverage/coverage.out +++ b/coverage/coverage.out @@ -1,45 +1,29 @@ mode: set -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/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/filters.go:16.56,17.16 1 0 +github.com/muety/wakapi/models/filters.go:29.2,29.19 1 0 +github.com/muety/wakapi/models/filters.go:18.22,19.32 1 0 +github.com/muety/wakapi/models/filters.go:20.17,21.27 1 0 +github.com/muety/wakapi/models/filters.go:22.23,23.33 1 0 +github.com/muety/wakapi/models/filters.go:24.21,25.31 1 0 +github.com/muety/wakapi/models/filters.go:26.22,27.32 1 0 +github.com/muety/wakapi/models/filters.go:32.47,33.21 1 1 +github.com/muety/wakapi/models/filters.go:44.2,44.21 1 1 +github.com/muety/wakapi/models/filters.go:33.21,35.3 1 1 +github.com/muety/wakapi/models/filters.go:35.8,35.23 1 1 +github.com/muety/wakapi/models/filters.go:35.23,37.3 1 0 +github.com/muety/wakapi/models/filters.go:37.8,37.29 1 1 +github.com/muety/wakapi/models/filters.go:37.29,39.3 1 1 +github.com/muety/wakapi/models/filters.go:39.8,39.27 1 1 +github.com/muety/wakapi/models/filters.go:39.27,41.3 1 0 +github.com/muety/wakapi/models/filters.go:41.8,41.28 1 1 +github.com/muety/wakapi/models/filters.go:41.28,43.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/models.go:3.14,5.2 0 1 -github.com/muety/wakapi/models/shared.go:35.52,37.2 1 0 -github.com/muety/wakapi/models/shared.go:39.52,42.16 3 0 -github.com/muety/wakapi/models/shared.go:45.2,47.12 3 0 -github.com/muety/wakapi/models/shared.go:42.16,44.3 1 0 -github.com/muety/wakapi/models/shared.go:51.52,57.22 2 0 -github.com/muety/wakapi/models/shared.go:73.2,76.12 3 0 -github.com/muety/wakapi/models/shared.go:58.14,60.17 2 0 -github.com/muety/wakapi/models/shared.go:63.13,65.8 2 0 -github.com/muety/wakapi/models/shared.go:66.17,68.8 2 0 -github.com/muety/wakapi/models/shared.go:69.10,70.64 1 0 -github.com/muety/wakapi/models/shared.go:60.17,62.4 1 0 -github.com/muety/wakapi/models/shared.go:79.45,81.2 1 0 -github.com/muety/wakapi/models/shared.go:83.51,86.2 2 0 -github.com/muety/wakapi/models/shared.go:88.37,91.2 2 0 -github.com/muety/wakapi/models/shared.go:93.35,95.2 1 0 -github.com/muety/wakapi/models/shared.go:97.34,99.2 1 0 +github.com/muety/wakapi/models/mail.go:16.44,20.2 3 0 +github.com/muety/wakapi/models/mail.go:22.44,26.2 3 0 +github.com/muety/wakapi/models/mail.go:28.32,41.2 1 0 +github.com/muety/wakapi/models/mail.go:43.41,45.2 1 0 github.com/muety/wakapi/models/summary.go:70.29,72.2 1 1 github.com/muety/wakapi/models/summary.go:74.37,81.2 6 1 github.com/muety/wakapi/models/summary.go:83.35,85.2 1 1 @@ -103,24 +87,23 @@ 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/filters.go:16.56,17.16 1 0 -github.com/muety/wakapi/models/filters.go:29.2,29.19 1 0 -github.com/muety/wakapi/models/filters.go:18.22,19.32 1 0 -github.com/muety/wakapi/models/filters.go:20.17,21.27 1 0 -github.com/muety/wakapi/models/filters.go:22.23,23.33 1 0 -github.com/muety/wakapi/models/filters.go:24.21,25.31 1 0 -github.com/muety/wakapi/models/filters.go:26.22,27.32 1 0 -github.com/muety/wakapi/models/filters.go:32.47,33.21 1 1 -github.com/muety/wakapi/models/filters.go:44.2,44.21 1 1 -github.com/muety/wakapi/models/filters.go:33.21,35.3 1 1 -github.com/muety/wakapi/models/filters.go:35.8,35.23 1 1 -github.com/muety/wakapi/models/filters.go:35.23,37.3 1 0 -github.com/muety/wakapi/models/filters.go:37.8,37.29 1 1 -github.com/muety/wakapi/models/filters.go:37.29,39.3 1 1 -github.com/muety/wakapi/models/filters.go:39.8,39.27 1 1 -github.com/muety/wakapi/models/filters.go:39.27,41.3 1 0 -github.com/muety/wakapi/models/filters.go:41.8,41.28 1 1 -github.com/muety/wakapi/models/filters.go:41.28,43.3 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 @@ -131,10 +114,10 @@ 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.go:16.44,20.2 3 0 -github.com/muety/wakapi/models/mail.go:22.44,26.2 3 0 -github.com/muety/wakapi/models/mail.go:28.32,41.2 1 0 -github.com/muety/wakapi/models/mail.go:43.41,45.2 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 @@ -153,97 +136,236 @@ 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/models.go:3.14,5.2 0 1 +github.com/muety/wakapi/models/shared.go:35.52,37.2 1 0 +github.com/muety/wakapi/models/shared.go:39.52,42.16 3 0 +github.com/muety/wakapi/models/shared.go:45.2,47.12 3 0 +github.com/muety/wakapi/models/shared.go:42.16,44.3 1 0 +github.com/muety/wakapi/models/shared.go:51.52,57.22 2 0 +github.com/muety/wakapi/models/shared.go:73.2,76.12 3 0 +github.com/muety/wakapi/models/shared.go:58.14,60.17 2 0 +github.com/muety/wakapi/models/shared.go:63.13,65.8 2 0 +github.com/muety/wakapi/models/shared.go:66.17,68.8 2 0 +github.com/muety/wakapi/models/shared.go:69.10,70.64 1 0 +github.com/muety/wakapi/models/shared.go:60.17,62.4 1 0 +github.com/muety/wakapi/models/shared.go:79.45,81.2 1 0 +github.com/muety/wakapi/models/shared.go:83.51,86.2 2 0 +github.com/muety/wakapi/models/shared.go:88.37,91.2 2 0 +github.com/muety/wakapi/models/shared.go:93.35,95.2 1 0 +github.com/muety/wakapi/models/shared.go:97.34,99.2 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:103.50,107.91 1 0 +github.com/muety/wakapi/config/sentry.go:107.91,108.29 1 0 +github.com/muety/wakapi/config/sentry.go:112.4,115.96 3 0 +github.com/muety/wakapi/config/sentry.go:118.4,118.39 1 0 +github.com/muety/wakapi/config/sentry.go:121.4,121.69 1 0 +github.com/muety/wakapi/config/sentry.go:108.29,110.5 1 0 +github.com/muety/wakapi/config/sentry.go:115.96,117.5 1 0 +github.com/muety/wakapi/config/sentry.go:118.39,120.5 1 0 +github.com/muety/wakapi/config/sentry.go:123.79,124.27 1 0 +github.com/muety/wakapi/config/sentry.go:131.4,131.16 1 0 +github.com/muety/wakapi/config/sentry.go:124.27,125.84 1 0 +github.com/muety/wakapi/config/sentry.go:125.84,126.42 1 0 +github.com/muety/wakapi/config/sentry.go:126.42,128.7 1 0 +github.com/muety/wakapi/config/sentry.go:133.17,135.3 1 0 +github.com/muety/wakapi/config/sentry.go:138.49,142.51 2 0 +github.com/muety/wakapi/config/sentry.go:145.2,145.12 1 0 +github.com/muety/wakapi/config/sentry.go:142.51,144.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/config/config.go:145.70,147.2 1 0 -github.com/muety/wakapi/config/config.go:149.65,151.2 1 0 -github.com/muety/wakapi/config/config.go:153.82,163.2 1 0 -github.com/muety/wakapi/config/config.go:165.31,167.2 1 0 -github.com/muety/wakapi/config/config.go:169.32,171.2 1 0 -github.com/muety/wakapi/config/config.go:173.74,174.19 1 0 -github.com/muety/wakapi/config/config.go:175.10,176.34 1 0 -github.com/muety/wakapi/config/config.go:176.34,177.57 1 0 -github.com/muety/wakapi/config/config.go:180.4,180.67 1 0 -github.com/muety/wakapi/config/config.go:183.4,183.58 1 0 -github.com/muety/wakapi/config/config.go:186.4,186.62 1 0 -github.com/muety/wakapi/config/config.go:189.4,189.60 1 0 -github.com/muety/wakapi/config/config.go:192.4,192.64 1 0 -github.com/muety/wakapi/config/config.go:195.4,195.68 1 0 -github.com/muety/wakapi/config/config.go:198.4,198.14 1 0 -github.com/muety/wakapi/config/config.go:177.57,179.5 1 0 -github.com/muety/wakapi/config/config.go:180.67,182.5 1 0 -github.com/muety/wakapi/config/config.go:183.58,185.5 1 0 -github.com/muety/wakapi/config/config.go:186.62,188.5 1 0 -github.com/muety/wakapi/config/config.go:189.60,191.5 1 0 -github.com/muety/wakapi/config/config.go:192.64,194.5 1 0 -github.com/muety/wakapi/config/config.go:195.68,197.5 1 0 -github.com/muety/wakapi/config/config.go:203.50,204.19 1 0 -github.com/muety/wakapi/config/config.go:217.2,217.12 1 0 -github.com/muety/wakapi/config/config.go:205.23,209.5 1 0 -github.com/muety/wakapi/config/config.go:210.26,213.5 1 0 -github.com/muety/wakapi/config/config.go:214.24,215.48 1 0 -github.com/muety/wakapi/config/config.go:220.53,231.2 1 1 -github.com/muety/wakapi/config/config.go:233.56,235.16 2 1 -github.com/muety/wakapi/config/config.go:239.2,246.3 1 1 -github.com/muety/wakapi/config/config.go:235.16,237.3 1 0 -github.com/muety/wakapi/config/config.go:249.54,251.2 1 1 -github.com/muety/wakapi/config/config.go:253.60,255.2 1 0 -github.com/muety/wakapi/config/config.go:257.59,259.2 1 0 -github.com/muety/wakapi/config/config.go:261.57,263.2 1 0 -github.com/muety/wakapi/config/config.go:265.53,267.2 1 0 -github.com/muety/wakapi/config/config.go:269.46,271.2 1 0 -github.com/muety/wakapi/config/config.go:273.43,275.2 1 0 -github.com/muety/wakapi/config/config.go:277.29,279.2 1 1 -github.com/muety/wakapi/config/config.go:281.48,291.65 2 0 -github.com/muety/wakapi/config/config.go:295.2,295.15 1 0 -github.com/muety/wakapi/config/config.go:291.65,293.3 1 0 -github.com/muety/wakapi/config/config.go:298.38,299.43 1 0 -github.com/muety/wakapi/config/config.go:302.2,302.15 1 0 -github.com/muety/wakapi/config/config.go:299.43,301.3 1 0 -github.com/muety/wakapi/config/config.go:305.45,306.27 1 0 -github.com/muety/wakapi/config/config.go:309.2,309.15 1 0 -github.com/muety/wakapi/config/config.go:306.27,308.3 1 0 -github.com/muety/wakapi/config/config.go:312.77,313.29 1 0 -github.com/muety/wakapi/config/config.go:318.2,318.19 1 0 -github.com/muety/wakapi/config/config.go:313.29,314.18 1 0 -github.com/muety/wakapi/config/config.go:314.18,316.4 1 0 -github.com/muety/wakapi/config/config.go:321.26,323.2 1 0 -github.com/muety/wakapi/config/config.go:325.20,327.2 1 0 -github.com/muety/wakapi/config/config.go:329.35,334.96 3 0 -github.com/muety/wakapi/config/config.go:338.2,346.52 5 0 -github.com/muety/wakapi/config/config.go:350.2,350.47 1 0 -github.com/muety/wakapi/config/config.go:356.2,356.70 1 0 -github.com/muety/wakapi/config/config.go:360.2,360.28 1 0 -github.com/muety/wakapi/config/config.go:364.2,364.29 1 0 -github.com/muety/wakapi/config/config.go:369.2,369.94 1 0 -github.com/muety/wakapi/config/config.go:373.2,374.14 2 0 -github.com/muety/wakapi/config/config.go:334.96,336.3 1 0 -github.com/muety/wakapi/config/config.go:346.52,348.3 1 0 -github.com/muety/wakapi/config/config.go:350.47,351.14 1 0 -github.com/muety/wakapi/config/config.go:351.14,353.4 1 0 -github.com/muety/wakapi/config/config.go:356.70,358.3 1 0 -github.com/muety/wakapi/config/config.go:360.28,362.3 1 0 -github.com/muety/wakapi/config/config.go:364.29,367.3 2 0 -github.com/muety/wakapi/config/config.go:369.94,371.3 1 0 -github.com/muety/wakapi/config/sentry.go:16.64,19.2 2 0 -github.com/muety/wakapi/config/sentry.go:21.13,23.2 1 1 -github.com/muety/wakapi/config/sentry.go:25.50,29.91 1 0 -github.com/muety/wakapi/config/sentry.go:29.91,30.29 1 0 -github.com/muety/wakapi/config/sentry.go:34.4,37.96 3 0 -github.com/muety/wakapi/config/sentry.go:40.4,40.39 1 0 -github.com/muety/wakapi/config/sentry.go:43.4,43.69 1 0 -github.com/muety/wakapi/config/sentry.go:30.29,32.5 1 0 -github.com/muety/wakapi/config/sentry.go:37.96,39.5 1 0 -github.com/muety/wakapi/config/sentry.go:40.39,42.5 1 0 -github.com/muety/wakapi/config/sentry.go:45.79,49.27 2 0 -github.com/muety/wakapi/config/sentry.go:56.4,56.16 1 0 -github.com/muety/wakapi/config/sentry.go:49.27,50.84 1 0 -github.com/muety/wakapi/config/sentry.go:50.84,51.57 1 0 -github.com/muety/wakapi/config/sentry.go:51.57,53.7 1 0 -github.com/muety/wakapi/config/sentry.go:58.17,60.3 1 0 +github.com/muety/wakapi/config/config.go:147.70,149.2 1 0 +github.com/muety/wakapi/config/config.go:151.65,153.2 1 0 +github.com/muety/wakapi/config/config.go:155.82,165.2 1 0 +github.com/muety/wakapi/config/config.go:167.31,169.2 1 0 +github.com/muety/wakapi/config/config.go:171.32,173.2 1 0 +github.com/muety/wakapi/config/config.go:175.74,176.19 1 0 +github.com/muety/wakapi/config/config.go:177.10,178.34 1 0 +github.com/muety/wakapi/config/config.go:178.34,179.57 1 0 +github.com/muety/wakapi/config/config.go:182.4,182.67 1 0 +github.com/muety/wakapi/config/config.go:185.4,185.58 1 0 +github.com/muety/wakapi/config/config.go:188.4,188.62 1 0 +github.com/muety/wakapi/config/config.go:191.4,191.60 1 0 +github.com/muety/wakapi/config/config.go:194.4,194.64 1 0 +github.com/muety/wakapi/config/config.go:197.4,197.68 1 0 +github.com/muety/wakapi/config/config.go:200.4,200.14 1 0 +github.com/muety/wakapi/config/config.go:179.57,181.5 1 0 +github.com/muety/wakapi/config/config.go:182.67,184.5 1 0 +github.com/muety/wakapi/config/config.go:185.58,187.5 1 0 +github.com/muety/wakapi/config/config.go:188.62,190.5 1 0 +github.com/muety/wakapi/config/config.go:191.60,193.5 1 0 +github.com/muety/wakapi/config/config.go:194.64,196.5 1 0 +github.com/muety/wakapi/config/config.go:197.68,199.5 1 0 +github.com/muety/wakapi/config/config.go:205.50,206.19 1 0 +github.com/muety/wakapi/config/config.go:219.2,219.12 1 0 +github.com/muety/wakapi/config/config.go:207.23,211.5 1 0 +github.com/muety/wakapi/config/config.go:212.26,215.5 1 0 +github.com/muety/wakapi/config/config.go:216.24,217.48 1 0 +github.com/muety/wakapi/config/config.go:222.53,233.2 1 1 +github.com/muety/wakapi/config/config.go:235.56,237.16 2 1 +github.com/muety/wakapi/config/config.go:241.2,248.3 1 1 +github.com/muety/wakapi/config/config.go:237.16,239.3 1 0 +github.com/muety/wakapi/config/config.go:251.54,253.2 1 1 +github.com/muety/wakapi/config/config.go:255.60,257.2 1 0 +github.com/muety/wakapi/config/config.go:259.59,261.2 1 0 +github.com/muety/wakapi/config/config.go:263.57,265.2 1 0 +github.com/muety/wakapi/config/config.go:267.53,269.2 1 0 +github.com/muety/wakapi/config/config.go:271.46,273.2 1 0 +github.com/muety/wakapi/config/config.go:275.43,277.2 1 0 +github.com/muety/wakapi/config/config.go:279.29,281.2 1 1 +github.com/muety/wakapi/config/config.go:283.48,294.16 2 0 +github.com/muety/wakapi/config/config.go:298.2,299.53 2 0 +github.com/muety/wakapi/config/config.go:303.2,303.15 1 0 +github.com/muety/wakapi/config/config.go:294.16,296.3 1 0 +github.com/muety/wakapi/config/config.go:299.53,301.3 1 0 +github.com/muety/wakapi/config/config.go:306.38,307.43 1 0 +github.com/muety/wakapi/config/config.go:310.2,310.15 1 0 +github.com/muety/wakapi/config/config.go:307.43,309.3 1 0 +github.com/muety/wakapi/config/config.go:313.45,314.27 1 0 +github.com/muety/wakapi/config/config.go:317.2,317.15 1 0 +github.com/muety/wakapi/config/config.go:314.27,316.3 1 0 +github.com/muety/wakapi/config/config.go:320.77,321.29 1 0 +github.com/muety/wakapi/config/config.go:326.2,326.19 1 0 +github.com/muety/wakapi/config/config.go:321.29,322.18 1 0 +github.com/muety/wakapi/config/config.go:322.18,324.4 1 0 +github.com/muety/wakapi/config/config.go:329.26,331.2 1 0 +github.com/muety/wakapi/config/config.go:333.20,335.2 1 0 +github.com/muety/wakapi/config/config.go:337.35,342.96 3 0 +github.com/muety/wakapi/config/config.go:346.2,355.52 6 0 +github.com/muety/wakapi/config/config.go:359.2,359.47 1 0 +github.com/muety/wakapi/config/config.go:365.2,365.70 1 0 +github.com/muety/wakapi/config/config.go:369.2,369.28 1 0 +github.com/muety/wakapi/config/config.go:373.2,373.29 1 0 +github.com/muety/wakapi/config/config.go:378.2,378.94 1 0 +github.com/muety/wakapi/config/config.go:382.2,383.14 2 0 +github.com/muety/wakapi/config/config.go:342.96,344.3 1 0 +github.com/muety/wakapi/config/config.go:355.52,357.3 1 0 +github.com/muety/wakapi/config/config.go:359.47,360.14 1 0 +github.com/muety/wakapi/config/config.go:360.14,362.4 1 0 +github.com/muety/wakapi/config/config.go:365.70,367.3 1 0 +github.com/muety/wakapi/config/config.go:369.28,371.3 1 0 +github.com/muety/wakapi/config/config.go:373.29,376.3 2 0 +github.com/muety/wakapi/config/config.go:378.94,380.3 1 0 +github.com/muety/wakapi/config/fs.go:9.56,10.19 1 0 +github.com/muety/wakapi/config/fs.go:13.2,13.19 1 0 +github.com/muety/wakapi/config/fs.go:10.19,12.3 1 0 +github.com/muety/wakapi/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/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/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/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:10.48,12.2 1 0 github.com/muety/wakapi/utils/common.go:14.52,16.2 1 0 github.com/muety/wakapi/utils/common.go:18.40,20.2 1 0 @@ -253,6 +375,19 @@ github.com/muety/wakapi/utils/common.go:30.24,32.2 1 0 github.com/muety/wakapi/utils/common.go:34.56,37.45 3 1 github.com/muety/wakapi/utils/common.go:40.2,40.40 1 1 github.com/muety/wakapi/utils/common.go:37.45,39.3 1 1 +github.com/muety/wakapi/utils/http.go:9.73,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: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/date.go:8.31,10.2 1 0 github.com/muety/wakapi/utils/date.go:12.43,14.2 1 0 github.com/muety/wakapi/utils/date.go:16.30,20.2 3 0 @@ -260,7 +395,7 @@ github.com/muety/wakapi/utils/date.go:22.31,25.2 2 0 github.com/muety/wakapi/utils/date.go:27.30,30.2 2 0 github.com/muety/wakapi/utils/date.go:33.42,35.2 1 1 github.com/muety/wakapi/utils/date.go:38.41,40.21 2 1 -github.com/muety/wakapi/utils/date.go:43.2,43.34 1 1 +github.com/muety/wakapi/utils/date.go:43.2,43.36 1 1 github.com/muety/wakapi/utils/date.go:40.21,42.3 1 1 github.com/muety/wakapi/utils/date.go:46.67,49.33 2 0 github.com/muety/wakapi/utils/date.go:58.2,58.18 1 0 @@ -275,8 +410,14 @@ github.com/muety/wakapi/utils/date.go:85.2,85.13 1 0 github.com/muety/wakapi/utils/date.go:73.36,76.3 2 0 github.com/muety/wakapi/utils/date.go:77.21,80.3 2 0 github.com/muety/wakapi/utils/date.go:81.21,84.3 2 0 -github.com/muety/wakapi/utils/http.go:9.73,12.58 3 0 -github.com/muety/wakapi/utils/http.go:12.58,14.3 1 0 +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 +github.com/muety/wakapi/utils/filesystem.go:16.16,18.3 1 0 +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/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 @@ -315,55 +456,66 @@ github.com/muety/wakapi/utils/summary.go:96.18,98.5 1 0 github.com/muety/wakapi/utils/summary.go:112.48,116.51 2 0 github.com/muety/wakapi/utils/summary.go:119.2,119.12 1 0 github.com/muety/wakapi/utils/summary.go:116.51,118.3 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/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/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 -github.com/muety/wakapi/utils/filesystem.go:16.16,18.3 1 0 -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/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/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/aggregation.go:24.142,31.2 1 0 +github.com/muety/wakapi/services/aggregation.go:40.43,42.37 1 0 +github.com/muety/wakapi/services/aggregation.go:46.2,48.19 3 0 +github.com/muety/wakapi/services/aggregation.go:42.37,44.3 1 0 +github.com/muety/wakapi/services/aggregation.go:51.67,55.40 3 0 +github.com/muety/wakapi/services/aggregation.go:59.2,59.50 1 0 +github.com/muety/wakapi/services/aggregation.go:64.2,64.60 1 0 +github.com/muety/wakapi/services/aggregation.go:70.2,70.35 1 0 +github.com/muety/wakapi/services/aggregation.go:55.40,57.3 1 0 +github.com/muety/wakapi/services/aggregation.go:59.50,61.3 1 0 +github.com/muety/wakapi/services/aggregation.go:64.60,68.3 3 0 +github.com/muety/wakapi/services/aggregation.go:73.109,74.24 1 0 +github.com/muety/wakapi/services/aggregation.go:74.24,75.111 1 0 +github.com/muety/wakapi/services/aggregation.go:75.111,77.4 1 0 +github.com/muety/wakapi/services/aggregation.go:77.9,80.4 2 0 +github.com/muety/wakapi/services/aggregation.go:84.80,85.33 1 0 +github.com/muety/wakapi/services/aggregation.go:85.33,86.60 1 0 +github.com/muety/wakapi/services/aggregation.go:86.60,88.4 1 0 +github.com/muety/wakapi/services/aggregation.go:92.100,96.59 3 0 +github.com/muety/wakapi/services/aggregation.go:111.2,112.16 2 0 +github.com/muety/wakapi/services/aggregation.go:118.2,119.16 2 0 +github.com/muety/wakapi/services/aggregation.go:125.2,126.44 2 0 +github.com/muety/wakapi/services/aggregation.go:131.2,131.41 1 0 +github.com/muety/wakapi/services/aggregation.go:145.2,145.12 1 0 +github.com/muety/wakapi/services/aggregation.go:96.59,99.3 2 0 +github.com/muety/wakapi/services/aggregation.go:99.8,99.47 1 0 +github.com/muety/wakapi/services/aggregation.go:99.47,101.30 2 0 +github.com/muety/wakapi/services/aggregation.go:101.30,102.43 1 0 +github.com/muety/wakapi/services/aggregation.go:102.43,104.5 1 0 +github.com/muety/wakapi/services/aggregation.go:106.8,108.3 1 0 +github.com/muety/wakapi/services/aggregation.go:112.16,115.3 2 0 +github.com/muety/wakapi/services/aggregation.go:119.16,122.3 2 0 +github.com/muety/wakapi/services/aggregation.go:126.44,128.3 1 0 +github.com/muety/wakapi/services/aggregation.go:131.41,132.21 1 0 +github.com/muety/wakapi/services/aggregation.go:132.21,136.4 1 0 +github.com/muety/wakapi/services/aggregation.go:136.9,136.62 1 0 +github.com/muety/wakapi/services/aggregation.go:136.62,140.4 1 0 +github.com/muety/wakapi/services/aggregation.go:148.83,163.41 5 0 +github.com/muety/wakapi/services/aggregation.go:163.41,173.3 3 0 +github.com/muety/wakapi/services/aggregation.go:176.34,179.2 2 0 +github.com/muety/wakapi/services/heartbeat.go:17.141,23.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:25.72,27.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:29.80,34.32 3 0 +github.com/muety/wakapi/services/heartbeat.go:41.2,41.55 1 0 +github.com/muety/wakapi/services/heartbeat.go:34.32,35.36 1 0 +github.com/muety/wakapi/services/heartbeat.go:35.36,38.4 2 0 +github.com/muety/wakapi/services/heartbeat.go:44.53,46.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:48.76,50.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:52.96,54.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:56.111,58.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:61.2,61.43 1 0 +github.com/muety/wakapi/services/heartbeat.go:58.16,60.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:64.116,66.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:68.78,70.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:72.62,74.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:76.116,78.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:82.2,82.28 1 0 +github.com/muety/wakapi/services/heartbeat.go:86.2,86.24 1 0 +github.com/muety/wakapi/services/heartbeat.go:78.16,80.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:82.28,84.3 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 @@ -406,91 +558,6 @@ github.com/muety/wakapi/services/misc.go:113.2,116.17 1 0 github.com/muety/wakapi/services/misc.go:101.30,104.3 2 0 github.com/muety/wakapi/services/misc.go:109.17,111.3 1 0 github.com/muety/wakapi/services/misc.go:116.17,118.3 1 0 -github.com/muety/wakapi/services/user.go:19.73,25.2 1 0 -github.com/muety/wakapi/services/user.go:27.74,28.40 1 0 -github.com/muety/wakapi/services/user.go:32.2,33.16 2 0 -github.com/muety/wakapi/services/user.go:37.2,38.15 2 0 -github.com/muety/wakapi/services/user.go:28.40,30.3 1 0 -github.com/muety/wakapi/services/user.go:33.16,35.3 1 0 -github.com/muety/wakapi/services/user.go:41.72,42.37 1 0 -github.com/muety/wakapi/services/user.go:46.2,47.16 2 0 -github.com/muety/wakapi/services/user.go:51.2,52.15 2 0 -github.com/muety/wakapi/services/user.go:42.37,44.3 1 0 -github.com/muety/wakapi/services/user.go:47.16,49.3 1 0 -github.com/muety/wakapi/services/user.go:55.76,57.2 1 0 -github.com/muety/wakapi/services/user.go:59.86,61.2 1 0 -github.com/muety/wakapi/services/user.go:63.58,65.2 1 0 -github.com/muety/wakapi/services/user.go:67.61,70.2 2 0 -github.com/muety/wakapi/services/user.go:72.48,74.2 1 0 -github.com/muety/wakapi/services/user.go:76.102,85.93 2 0 -github.com/muety/wakapi/services/user.go:91.2,91.38 1 0 -github.com/muety/wakapi/services/user.go:85.93,87.3 1 0 -github.com/muety/wakapi/services/user.go:87.8,89.3 1 0 -github.com/muety/wakapi/services/user.go:94.73,97.2 2 0 -github.com/muety/wakapi/services/user.go:99.78,103.2 3 0 -github.com/muety/wakapi/services/user.go:105.99,108.2 2 0 -github.com/muety/wakapi/services/user.go:110.106,113.96 3 0 -github.com/muety/wakapi/services/user.go:118.2,118.68 1 0 -github.com/muety/wakapi/services/user.go:113.96,115.3 1 0 -github.com/muety/wakapi/services/user.go:115.8,117.3 1 0 -github.com/muety/wakapi/services/user.go:121.85,123.2 1 0 -github.com/muety/wakapi/services/user.go:125.57,128.2 2 0 -github.com/muety/wakapi/services/user.go:130.38,132.2 1 0 -github.com/muety/wakapi/services/alias.go:17.77,22.2 1 1 -github.com/muety/wakapi/services/alias.go:26.60,27.43 1 1 -github.com/muety/wakapi/services/alias.go:30.2,30.14 1 1 -github.com/muety/wakapi/services/alias.go:27.43,29.3 1 1 -github.com/muety/wakapi/services/alias.go:33.62,35.16 2 1 -github.com/muety/wakapi/services/alias.go:38.2,38.12 1 1 -github.com/muety/wakapi/services/alias.go:35.16,37.3 1 1 -github.com/muety/wakapi/services/alias.go:41.76,43.16 2 0 -github.com/muety/wakapi/services/alias.go:46.2,46.21 1 0 -github.com/muety/wakapi/services/alias.go:43.16,45.3 1 0 -github.com/muety/wakapi/services/alias.go:49.113,51.16 2 0 -github.com/muety/wakapi/services/alias.go:54.2,54.21 1 0 -github.com/muety/wakapi/services/alias.go:51.16,53.3 1 0 -github.com/muety/wakapi/services/alias.go:57.108,58.32 1 1 -github.com/muety/wakapi/services/alias.go:64.2,65.46 2 1 -github.com/muety/wakapi/services/alias.go:70.2,70.19 1 1 -github.com/muety/wakapi/services/alias.go:58.32,59.52 1 1 -github.com/muety/wakapi/services/alias.go:59.52,61.4 1 1 -github.com/muety/wakapi/services/alias.go:65.46,66.48 1 1 -github.com/muety/wakapi/services/alias.go:66.48,68.4 1 1 -github.com/muety/wakapi/services/alias.go:73.77,75.16 2 0 -github.com/muety/wakapi/services/alias.go:78.2,79.20 2 0 -github.com/muety/wakapi/services/alias.go:75.16,77.3 1 0 -github.com/muety/wakapi/services/alias.go:82.60,83.24 1 0 -github.com/muety/wakapi/services/alias.go:86.2,88.12 3 0 -github.com/muety/wakapi/services/alias.go:83.24,85.3 1 0 -github.com/muety/wakapi/services/alias.go:91.69,94.28 3 0 -github.com/muety/wakapi/services/alias.go:102.2,104.31 2 0 -github.com/muety/wakapi/services/alias.go:108.2,108.12 1 0 -github.com/muety/wakapi/services/alias.go:94.28,95.21 1 0 -github.com/muety/wakapi/services/alias.go:98.3,99.16 2 0 -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:17.141,23.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:25.72,27.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:29.80,34.32 3 0 -github.com/muety/wakapi/services/heartbeat.go:41.2,41.55 1 0 -github.com/muety/wakapi/services/heartbeat.go:34.32,35.36 1 0 -github.com/muety/wakapi/services/heartbeat.go:35.36,38.4 2 0 -github.com/muety/wakapi/services/heartbeat.go:44.53,46.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:48.76,50.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:52.96,54.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:56.111,58.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:61.2,61.43 1 0 -github.com/muety/wakapi/services/heartbeat.go:58.16,60.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:64.116,66.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:68.78,70.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:72.62,74.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:76.116,78.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:82.2,82.28 1 0 -github.com/muety/wakapi/services/heartbeat.go:86.2,86.24 1 0 -github.com/muety/wakapi/services/heartbeat.go:78.16,80.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:82.28,84.3 1 0 github.com/muety/wakapi/services/summary.go:27.149,35.2 1 1 github.com/muety/wakapi/services/summary.go:39.136,42.66 2 1 github.com/muety/wakapi/services/summary.go:47.2,47.44 1 1 @@ -582,120 +649,75 @@ github.com/muety/wakapi/services/summary.go:333.54,335.3 1 1 github.com/muety/wakapi/services/summary.go:340.59,342.25 2 1 github.com/muety/wakapi/services/summary.go:345.2,345.32 1 1 github.com/muety/wakapi/services/summary.go:342.25,344.3 1 1 -github.com/muety/wakapi/services/aggregation.go:24.142,31.2 1 0 -github.com/muety/wakapi/services/aggregation.go:40.43,42.37 1 0 -github.com/muety/wakapi/services/aggregation.go:46.2,48.19 3 0 -github.com/muety/wakapi/services/aggregation.go:42.37,44.3 1 0 -github.com/muety/wakapi/services/aggregation.go:51.67,55.40 3 0 -github.com/muety/wakapi/services/aggregation.go:59.2,59.50 1 0 -github.com/muety/wakapi/services/aggregation.go:64.2,64.60 1 0 -github.com/muety/wakapi/services/aggregation.go:70.2,70.35 1 0 -github.com/muety/wakapi/services/aggregation.go:55.40,57.3 1 0 -github.com/muety/wakapi/services/aggregation.go:59.50,61.3 1 0 -github.com/muety/wakapi/services/aggregation.go:64.60,68.3 3 0 -github.com/muety/wakapi/services/aggregation.go:73.109,74.24 1 0 -github.com/muety/wakapi/services/aggregation.go:74.24,75.111 1 0 -github.com/muety/wakapi/services/aggregation.go:75.111,77.4 1 0 -github.com/muety/wakapi/services/aggregation.go:77.9,80.4 2 0 -github.com/muety/wakapi/services/aggregation.go:84.80,85.33 1 0 -github.com/muety/wakapi/services/aggregation.go:85.33,86.60 1 0 -github.com/muety/wakapi/services/aggregation.go:86.60,88.4 1 0 -github.com/muety/wakapi/services/aggregation.go:92.100,96.59 3 0 -github.com/muety/wakapi/services/aggregation.go:111.2,112.16 2 0 -github.com/muety/wakapi/services/aggregation.go:118.2,119.16 2 0 -github.com/muety/wakapi/services/aggregation.go:125.2,126.44 2 0 -github.com/muety/wakapi/services/aggregation.go:131.2,131.41 1 0 -github.com/muety/wakapi/services/aggregation.go:145.2,145.12 1 0 -github.com/muety/wakapi/services/aggregation.go:96.59,99.3 2 0 -github.com/muety/wakapi/services/aggregation.go:99.8,99.47 1 0 -github.com/muety/wakapi/services/aggregation.go:99.47,101.30 2 0 -github.com/muety/wakapi/services/aggregation.go:101.30,102.43 1 0 -github.com/muety/wakapi/services/aggregation.go:102.43,104.5 1 0 -github.com/muety/wakapi/services/aggregation.go:106.8,108.3 1 0 -github.com/muety/wakapi/services/aggregation.go:112.16,115.3 2 0 -github.com/muety/wakapi/services/aggregation.go:119.16,122.3 2 0 -github.com/muety/wakapi/services/aggregation.go:126.44,128.3 1 0 -github.com/muety/wakapi/services/aggregation.go:131.41,132.21 1 0 -github.com/muety/wakapi/services/aggregation.go:132.21,136.4 1 0 -github.com/muety/wakapi/services/aggregation.go:136.9,136.62 1 0 -github.com/muety/wakapi/services/aggregation.go:136.62,140.4 1 0 -github.com/muety/wakapi/services/aggregation.go:148.83,163.41 5 0 -github.com/muety/wakapi/services/aggregation.go:163.41,173.3 3 0 -github.com/muety/wakapi/services/aggregation.go:176.34,179.2 2 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/sentry.go:14.60,15.43 1 0 -github.com/muety/wakapi/middlewares/sentry.go:15.43,19.3 1 0 -github.com/muety/wakapi/middlewares/sentry.go:22.78,25.54 3 0 -github.com/muety/wakapi/middlewares/sentry.go:25.54,26.43 1 0 -github.com/muety/wakapi/middlewares/sentry.go:26.43,28.4 1 0 +github.com/muety/wakapi/services/alias.go:17.77,22.2 1 1 +github.com/muety/wakapi/services/alias.go:26.60,27.43 1 1 +github.com/muety/wakapi/services/alias.go:30.2,30.14 1 1 +github.com/muety/wakapi/services/alias.go:27.43,29.3 1 1 +github.com/muety/wakapi/services/alias.go:33.62,35.16 2 1 +github.com/muety/wakapi/services/alias.go:38.2,38.12 1 1 +github.com/muety/wakapi/services/alias.go:35.16,37.3 1 1 +github.com/muety/wakapi/services/alias.go:41.76,43.16 2 0 +github.com/muety/wakapi/services/alias.go:46.2,46.21 1 0 +github.com/muety/wakapi/services/alias.go:43.16,45.3 1 0 +github.com/muety/wakapi/services/alias.go:49.113,51.16 2 0 +github.com/muety/wakapi/services/alias.go:54.2,54.21 1 0 +github.com/muety/wakapi/services/alias.go:51.16,53.3 1 0 +github.com/muety/wakapi/services/alias.go:57.108,58.32 1 1 +github.com/muety/wakapi/services/alias.go:64.2,65.46 2 1 +github.com/muety/wakapi/services/alias.go:70.2,70.19 1 1 +github.com/muety/wakapi/services/alias.go:58.32,59.52 1 1 +github.com/muety/wakapi/services/alias.go:59.52,61.4 1 1 +github.com/muety/wakapi/services/alias.go:65.46,66.48 1 1 +github.com/muety/wakapi/services/alias.go:66.48,68.4 1 1 +github.com/muety/wakapi/services/alias.go:73.77,75.16 2 0 +github.com/muety/wakapi/services/alias.go:78.2,79.20 2 0 +github.com/muety/wakapi/services/alias.go:75.16,77.3 1 0 +github.com/muety/wakapi/services/alias.go:82.60,83.24 1 0 +github.com/muety/wakapi/services/alias.go:86.2,88.12 3 0 +github.com/muety/wakapi/services/alias.go:83.24,85.3 1 0 +github.com/muety/wakapi/services/alias.go:91.69,94.28 3 0 +github.com/muety/wakapi/services/alias.go:102.2,104.31 2 0 +github.com/muety/wakapi/services/alias.go:108.2,108.12 1 0 +github.com/muety/wakapi/services/alias.go:94.28,95.21 1 0 +github.com/muety/wakapi/services/alias.go:98.3,99.16 2 0 +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/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:19.73,25.2 1 0 +github.com/muety/wakapi/services/user.go:27.74,28.40 1 0 +github.com/muety/wakapi/services/user.go:32.2,33.16 2 0 +github.com/muety/wakapi/services/user.go:37.2,38.15 2 0 +github.com/muety/wakapi/services/user.go:28.40,30.3 1 0 +github.com/muety/wakapi/services/user.go:33.16,35.3 1 0 +github.com/muety/wakapi/services/user.go:41.72,42.37 1 0 +github.com/muety/wakapi/services/user.go:46.2,47.16 2 0 +github.com/muety/wakapi/services/user.go:51.2,52.15 2 0 +github.com/muety/wakapi/services/user.go:42.37,44.3 1 0 +github.com/muety/wakapi/services/user.go:47.16,49.3 1 0 +github.com/muety/wakapi/services/user.go:55.76,57.2 1 0 +github.com/muety/wakapi/services/user.go:59.86,61.2 1 0 +github.com/muety/wakapi/services/user.go:63.58,65.2 1 0 +github.com/muety/wakapi/services/user.go:67.61,70.2 2 0 +github.com/muety/wakapi/services/user.go:72.48,74.2 1 0 +github.com/muety/wakapi/services/user.go:76.102,85.93 2 0 +github.com/muety/wakapi/services/user.go:91.2,91.38 1 0 +github.com/muety/wakapi/services/user.go:85.93,87.3 1 0 +github.com/muety/wakapi/services/user.go:87.8,89.3 1 0 +github.com/muety/wakapi/services/user.go:94.73,97.2 2 0 +github.com/muety/wakapi/services/user.go:99.78,103.2 3 0 +github.com/muety/wakapi/services/user.go:105.99,108.2 2 0 +github.com/muety/wakapi/services/user.go:110.106,113.96 3 0 +github.com/muety/wakapi/services/user.go:118.2,118.68 1 0 +github.com/muety/wakapi/services/user.go:113.96,115.3 1 0 +github.com/muety/wakapi/services/user.go:115.8,117.3 1 0 +github.com/muety/wakapi/services/user.go:121.85,123.2 1 0 +github.com/muety/wakapi/services/user.go:125.57,128.2 2 0 +github.com/muety/wakapi/services/user.go:130.38,132.2 1 0 diff --git a/mocks/alias_repository.go b/mocks/alias_repository.go index 8b3114f..e962d26 100644 --- a/mocks/alias_repository.go +++ b/mocks/alias_repository.go @@ -9,6 +9,11 @@ type AliasRepositoryMock struct { mock.Mock } +func (m *AliasRepositoryMock) GetAll() ([]*models.Alias, error) { + args := m.Called() + return args.Get(0).([]*models.Alias), args.Error(1) +} + func (m *AliasRepositoryMock) GetByUser(s string) ([]*models.Alias, error) { args := m.Called(s) return args.Get(0).([]*models.Alias), args.Error(1) diff --git a/mocks/summary_repository.go b/mocks/summary_repository.go index fd1e40b..420e748 100644 --- a/mocks/summary_repository.go +++ b/mocks/summary_repository.go @@ -15,6 +15,11 @@ func (m *SummaryRepositoryMock) Insert(summary *models.Summary) error { return args.Error(0) } +func (m *SummaryRepositoryMock) GetAll() ([]*models.Summary, error) { + args := m.Called() + return args.Get(0).([]*models.Summary), args.Error(1) +} + func (m *SummaryRepositoryMock) GetByUserWithin(user *models.User, time time.Time, time2 time.Time) ([]*models.Summary, error) { args := m.Called(user, time, time2) return args.Get(0).([]*models.Summary), args.Error(1) diff --git a/repositories/alias.go b/repositories/alias.go index cc2faf6..676d0df 100644 --- a/repositories/alias.go +++ b/repositories/alias.go @@ -14,6 +14,14 @@ func NewAliasRepository(db *gorm.DB) *AliasRepository { return &AliasRepository{db: db} } +func (r *AliasRepository) GetAll() ([]*models.Alias, error) { + var aliases []*models.Alias + if err := r.db.Find(&aliases).Error; err != nil { + return nil, err + } + return aliases, nil +} + func (r *AliasRepository) GetByUser(userId string) ([]*models.Alias, error) { var aliases []*models.Alias if err := r.db. diff --git a/repositories/heartbeart.go b/repositories/heartbeart.go index dd37234..9e92198 100644 --- a/repositories/heartbeart.go +++ b/repositories/heartbeart.go @@ -15,6 +15,15 @@ func NewHeartbeatRepository(db *gorm.DB) *HeartbeatRepository { return &HeartbeatRepository{db: db} } +// Use with caution!! +func (r *HeartbeatRepository) GetAll() ([]*models.Heartbeat, error) { + var heartbeats []*models.Heartbeat + if err := r.db.Find(&heartbeats).Error; err != nil { + return nil, err + } + return heartbeats, nil +} + func (r *HeartbeatRepository) InsertBatch(heartbeats []*models.Heartbeat) error { if err := r.db. Clauses(clause.OnConflict{ diff --git a/repositories/key_value.go b/repositories/key_value.go index c59acce..3e2ae31 100644 --- a/repositories/key_value.go +++ b/repositories/key_value.go @@ -15,6 +15,14 @@ func NewKeyValueRepository(db *gorm.DB) *KeyValueRepository { return &KeyValueRepository{db: db} } +func (r *KeyValueRepository) GetAll() ([]*models.KeyStringValue, error) { + var keyValues []*models.KeyStringValue + if err := r.db.Find(&keyValues).Error; err != nil { + return nil, err + } + return keyValues, nil +} + func (r *KeyValueRepository) GetString(key string) (*models.KeyStringValue, error) { kv := &models.KeyStringValue{} if err := r.db. diff --git a/repositories/language_mapping.go b/repositories/language_mapping.go index 9a18fb3..1d0c029 100644 --- a/repositories/language_mapping.go +++ b/repositories/language_mapping.go @@ -16,6 +16,14 @@ func NewLanguageMappingRepository(db *gorm.DB) *LanguageMappingRepository { return &LanguageMappingRepository{config: config.Get(), db: db} } +func (r *LanguageMappingRepository) GetAll() ([]*models.LanguageMapping, error) { + var mappings []*models.LanguageMapping + if err := r.db.Find(&mappings).Error; err != nil { + return nil, err + } + return mappings, nil +} + func (r *LanguageMappingRepository) GetById(id uint) (*models.LanguageMapping, error) { mapping := &models.LanguageMapping{} if err := r.db.Where(&models.LanguageMapping{ID: id}).First(mapping).Error; err != nil { diff --git a/repositories/repositories.go b/repositories/repositories.go index 111197c..4ade237 100644 --- a/repositories/repositories.go +++ b/repositories/repositories.go @@ -9,6 +9,7 @@ type IAliasRepository interface { Insert(*models.Alias) (*models.Alias, error) Delete(uint) error DeleteBatch([]uint) error + GetAll() ([]*models.Alias, error) GetByUser(string) ([]*models.Alias, error) GetByUserAndKey(string, string) ([]*models.Alias, error) GetByUserAndKeyAndType(string, string, uint8) ([]*models.Alias, error) @@ -17,6 +18,7 @@ type IAliasRepository interface { type IHeartbeatRepository interface { InsertBatch([]*models.Heartbeat) error + GetAll() ([]*models.Heartbeat, error) GetAllWithin(time.Time, time.Time, *models.User) ([]*models.Heartbeat, error) GetFirstByUsers() ([]*models.TimeByUser, error) GetLastByUsers() ([]*models.TimeByUser, error) @@ -28,12 +30,14 @@ type IHeartbeatRepository interface { } type IKeyValueRepository interface { + GetAll() ([]*models.KeyStringValue, error) GetString(string) (*models.KeyStringValue, error) PutString(*models.KeyStringValue) error DeleteString(string) error } type ILanguageMappingRepository interface { + GetAll() ([]*models.LanguageMapping, error) GetById(uint) (*models.LanguageMapping, error) GetByUser(string) ([]*models.LanguageMapping, error) Insert(*models.LanguageMapping) (*models.LanguageMapping, error) @@ -42,6 +46,7 @@ type ILanguageMappingRepository interface { type ISummaryRepository interface { Insert(*models.Summary) error + GetAll() ([]*models.Summary, error) GetByUserWithin(*models.User, time.Time, time.Time) ([]*models.Summary, error) GetLastByUser() ([]*models.TimeByUser, error) DeleteByUser(string) error diff --git a/repositories/summary.go b/repositories/summary.go index 20f04a3..f151780 100644 --- a/repositories/summary.go +++ b/repositories/summary.go @@ -14,6 +14,14 @@ func NewSummaryRepository(db *gorm.DB) *SummaryRepository { return &SummaryRepository{db: db} } +func (r *SummaryRepository) GetAll() ([]*models.Summary, error) { + var summaries []*models.Summary + if err := r.db.Find(&summaries).Error; err != nil { + return nil, err + } + return summaries, nil +} + func (r *SummaryRepository) Insert(summary *models.Summary) error { if err := r.db.Create(summary).Error; err != nil { return err diff --git a/scripts/sqlite2mysql.go b/scripts/sqlite2mysql.go new file mode 100644 index 0000000..65343b4 --- /dev/null +++ b/scripts/sqlite2mysql.go @@ -0,0 +1,232 @@ +package main + +/* +Usage: +--- +1. Set up a MySQL instance (see docker_mysql.sh for example) +2. Create config file (e.g. migrate.yml) as shown below +3. go run sqlite2mysql.go + +Example: migrate.yml +--- +# SQLite +source: + # Example: ../wakapi_db.db (relative to script path) + name: + +# MySQL +target: + host: + port: + user: + password: + name: +*/ + +import ( + "flag" + "fmt" + "github.com/jinzhu/configor" + "github.com/muety/wakapi/models" + "github.com/muety/wakapi/repositories" + "gorm.io/driver/mysql" + "gorm.io/driver/sqlite" + "gorm.io/gorm" + "log" + "os" +) + +type config struct { + Source dbConfig // sqlite + Target dbConfig // mysql +} + +type dbConfig struct { + Host string + Port uint + User string + Password string + Name string +} + +var cfg *config +var dbSource, dbTarget *gorm.DB +var cFlag *string + +func init() { + cfg = &config{} + + if f := flag.Lookup("config"); f == nil { + cFlag = flag.String("config", "sqlite2mysql.yml", "config file location") + } else { + ff := f.Value.(flag.Getter).Get().(string) + cFlag = &ff + } + flag.Parse() + + if err := configor.New(&configor.Config{}).Load(cfg, mustConfigPath()); err != nil { + log.Fatalln("failed to read config", err) + } + + log.Println("attempting to open sqlite database as Source") + if db, err := gorm.Open(sqlite.Open(cfg.Source.Name), &gorm.Config{}); err != nil { + log.Fatalln(err) + } else { + dbSource = db + } + + log.Println("attempting to open mysql database as Target") + if db, err := gorm.Open(mysql.New(mysql.Config{ + DriverName: "mysql", + DSN: fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=true&loc=%s&sql_mode=ANSI_QUOTES", + cfg.Target.User, + cfg.Target.Password, + cfg.Target.Host, + cfg.Target.Port, + cfg.Target.Name, + "utf8mb4", + "Local", + ), + }), &gorm.Config{}); err != nil { + log.Fatalln(err) + } else { + dbTarget = db + } +} + +func destroy() { + if db, _ := dbSource.DB(); db != nil { + db.Close() + } + if db, _ := dbTarget.DB(); db != nil { + db.Close() + } +} + +func main() { + defer destroy() + if err := createSchema(); err != nil { + log.Fatalln(err) + } + + keyValueSource := repositories.NewKeyValueRepository(dbSource) + keyValueTarget := repositories.NewKeyValueRepository(dbTarget) + + userSource := repositories.NewUserRepository(dbSource) + userTarget := repositories.NewUserRepository(dbTarget) + + languageMappingSource := repositories.NewLanguageMappingRepository(dbSource) + languageMappingTarget := repositories.NewLanguageMappingRepository(dbTarget) + + aliasSource := repositories.NewAliasRepository(dbSource) + aliasTarget := repositories.NewAliasRepository(dbTarget) + + summarySource := repositories.NewSummaryRepository(dbSource) + summaryTarget := repositories.NewSummaryRepository(dbTarget) + + heartbeatSource := repositories.NewHeartbeatRepository(dbSource) + heartbeatTarget := repositories.NewHeartbeatRepository(dbTarget) + + // TODO: things could be optimized through batch-inserts / inserts within a single transaction + + log.Println("Migrating key-value pairs ...") + if data, err := keyValueSource.GetAll(); err == nil { + for _, e := range data { + if err := keyValueTarget.PutString(e); err != nil { + log.Fatalln(err) + } + } + } else { + log.Fatalln(err) + } + + log.Println("Migrating users ...") + if data, err := userSource.GetAll(); err == nil { + for _, e := range data { + if _, _, err := userTarget.InsertOrGet(e); err != nil { + log.Fatalln(err) + } + } + } else { + log.Fatalln(err) + } + + log.Println("Migrating language mappings ...") + if data, err := languageMappingSource.GetAll(); err == nil { + for _, e := range data { + e.ID = 0 + if _, err := languageMappingTarget.Insert(e); err != nil { + log.Fatalln(err) + } + } + } else { + log.Fatalln(err) + } + + log.Println("Migrating aliases ...") + if data, err := aliasSource.GetAll(); err == nil { + for _, e := range data { + e.ID = 0 + if _, err := aliasTarget.Insert(e); err != nil { + log.Fatalln(err) + } + } + } else { + log.Fatalln(err) + } + + log.Println("Migrating summaries ...") + if data, err := summarySource.GetAll(); err == nil { + for _, e := range data { + e.ID = 0 + if err := summaryTarget.Insert(e); err != nil { + log.Fatalln(err) + } + } + } else { + log.Fatalln(err) + } + + // TODO: copy in mini-batches instead of loading all heartbeats into memory (potentially millions) + log.Println("Migrating heartbeats ...") + if data, err := heartbeatSource.GetAll(); err == nil { + log.Printf("Got %d heartbeats loaded into memory. Batch-inserting them now ...\n", len(data)) + if err := heartbeatTarget.InsertBatch(data); err != nil { + log.Fatalln(err) + } + } else { + log.Fatalln(err) + } +} + +func createSchema() error { + if err := dbTarget.AutoMigrate(&models.User{}); err != nil { + return err + } + if err := dbTarget.AutoMigrate(&models.KeyStringValue{}); err != nil { + return err + } + if err := dbTarget.AutoMigrate(&models.Alias{}); err != nil { + return err + } + if err := dbTarget.AutoMigrate(&models.Heartbeat{}); err != nil { + return err + } + if err := dbTarget.AutoMigrate(&models.Summary{}); err != nil { + return err + } + if err := dbTarget.AutoMigrate(&models.SummaryItem{}); err != nil { + return err + } + if err := dbTarget.AutoMigrate(&models.LanguageMapping{}); err != nil { + return err + } + return nil +} + +func mustConfigPath() string { + if _, err := os.Stat(*cFlag); err != nil { + log.Fatalln("failed to find config file at", *cFlag) + } + return *cFlag +}