From a90b73ad70296742a3d26e97120ee1c6813e0560 Mon Sep 17 00:00:00 2001 From: simon987 Date: Sat, 9 Feb 2019 19:05:45 -0500 Subject: [PATCH] Clear old monitoring snapshots, logout endpoint --- api/auth.go | 7 +++++++ api/main.go | 1 + config.yml | 4 ++-- storage/monitoring.go | 13 +++++++++++-- .../account-details.component.css | 3 +++ .../account-details.component.html | 13 ++++++++----- .../account-details.component.ts | 8 ++++---- web/angular/src/app/api.service.ts | 4 ++++ web/angular/src/app/app.component.html | 6 +++++- web/angular/src/app/app.component.ts | 5 ++++- web/angular/src/app/auth.service.ts | 18 ++++++++++++++++++ web/angular/src/assets/i18n/en.json | 6 ++++-- web/angular/src/assets/i18n/fr.json | 6 ++++-- 13 files changed, 75 insertions(+), 19 deletions(-) diff --git a/api/auth.go b/api/auth.go index 931712b..4a2dc6c 100644 --- a/api/auth.go +++ b/api/auth.go @@ -77,6 +77,13 @@ func (api *WebAPI) Login(r *Request) { }).Info("Logged in") } +func (api *WebAPI) Logout(r *Request) { + + sess := api.Session.StartFasthttp(r.Ctx) + sess.Clear() + r.Ctx.Response.SetStatusCode(204) +} + func (api *WebAPI) Register(r *Request) { req := &RegisterRequest{} diff --git a/api/main.go b/api/main.go index a84d592..f53c15c 100644 --- a/api/main.go +++ b/api/main.go @@ -102,6 +102,7 @@ func New() *WebAPI { api.router.POST("/register", LogRequestMiddleware(api.Register)) api.router.POST("/login", LogRequestMiddleware(api.Login)) + api.router.GET("/logout", LogRequestMiddleware(api.Logout)) api.router.GET("/account", LogRequestMiddleware(api.AccountDetails)) api.router.NotFound = func(ctx *fasthttp.RequestCtx) { diff --git a/config.yml b/config.yml index c8cbd16..3d86868 100755 --- a/config.yml +++ b/config.yml @@ -21,5 +21,5 @@ session: expiration: "25m" monitoring: - snapshot_interval: "10s" - history_length: "3000h" + snapshot_interval: "60s" + history_length: "4h" diff --git a/storage/monitoring.go b/storage/monitoring.go index 50b0eb8..eec4f84 100644 --- a/storage/monitoring.go +++ b/storage/monitoring.go @@ -2,6 +2,7 @@ package storage import ( "github.com/Sirupsen/logrus" + "github.com/simon987/task_tracker/config" "time" ) @@ -19,7 +20,7 @@ func (database *Database) MakeProjectSnapshots() { startTime := time.Now() db := database.getDB() - _, err := db.Exec(` + insertRes, err := db.Exec(` INSERT INTO project_monitoring_snapshot (project, new_task_count, failed_task_count, closed_task_count, worker_access_count, awaiting_verification_task_count, timestamp) @@ -35,9 +36,17 @@ func (database *Database) MakeProjectSnapshots() { extract(epoch from now() at time zone 'utc') FROM project`) handleErr(err) + inserted, _ := insertRes.RowsAffected() + + res, err := db.Exec(`DELETE FROM project_monitoring_snapshot WHERE timestamp < $1`, + int64(time.Now().Unix())-int64(config.Cfg.MonitoringHistory.Seconds())) + handleErr(err) + deleted, _ := res.RowsAffected() logrus.WithFields(logrus.Fields{ - "took": time.Now().Sub(startTime), + "took": time.Now().Sub(startTime), + "add": inserted, + "remove": deleted, }).Trace("Took monitoring snapshot") } diff --git a/web/angular/src/app/account-details/account-details.component.css b/web/angular/src/app/account-details/account-details.component.css index e69de29..4262683 100644 --- a/web/angular/src/app/account-details/account-details.component.css +++ b/web/angular/src/app/account-details/account-details.component.css @@ -0,0 +1,3 @@ +mat-divider { + margin: 1em 0 !important; +} diff --git a/web/angular/src/app/account-details/account-details.component.html b/web/angular/src/app/account-details/account-details.component.html index bbca006..f9e4878 100644 --- a/web/angular/src/app/account-details/account-details.component.html +++ b/web/angular/src/app/account-details/account-details.component.html @@ -1,5 +1,5 @@
- + {{"account.title" | translate}} @@ -11,19 +11,22 @@ {{"account.username" | translate}}:  -
{{account.username}}
+
{{authService.account.username}}
{{"account.metadata" | translate}} -
 {{account | json}}
+
 {{authService.account | json}}
+ + + - - +
+ diff --git a/web/angular/src/app/account-details/account-details.component.ts b/web/angular/src/app/account-details/account-details.component.ts index 1c7f8d5..8ace18e 100644 --- a/web/angular/src/app/account-details/account-details.component.ts +++ b/web/angular/src/app/account-details/account-details.component.ts @@ -8,13 +8,13 @@ import {AuthService} from "../auth.service"; }) export class AccountDetailsComponent implements OnInit { - account: Manager; - - constructor(private authService: AuthService) { + constructor(public authService: AuthService) { } ngOnInit() { - this.account = this.authService.account; } + public logout() { + this.authService.logout(); + } } diff --git a/web/angular/src/app/api.service.ts b/web/angular/src/app/api.service.ts index 7d9edf5..a631656 100755 --- a/web/angular/src/app/api.service.ts +++ b/web/angular/src/app/api.service.ts @@ -45,6 +45,10 @@ export class ApiService { return this.http.post(this.url + "/login", credentials, this.options) } + logout() { + return this.http.get(this.url + "/logout", this.options) + } + getAccountDetails() { return this.http.get(this.url + "/account", this.options) } diff --git a/web/angular/src/app/app.component.html b/web/angular/src/app/app.component.html index 435c16c..d6278ca 100755 --- a/web/angular/src/app/app.component.html +++ b/web/angular/src/app/app.component.html @@ -29,8 +29,12 @@ - +