From 095fc10ac83a259320804f576bc5e51b2c3a3ceb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Zieli=C5=84ski?= Date: Fri, 1 Sep 2023 18:23:53 +0200 Subject: [PATCH] AdminController; DbBackup route --- .DS_Store | Bin 0 -> 6148 bytes WebAPI/.DS_Store | Bin 0 -> 8196 bytes WebAPI/Controllers/AdminController.cs | 112 +++++++++++++++++++++++++ WebAPI/Controllers/LayersController.cs | 3 +- WebAPI/Controllers/LogsController.cs | 3 + WebAPI/Models/LogEntry.cs | 3 +- WebAPI/appsettings.Development.json | 2 + WebAPI/appsettings.json | 4 +- 8 files changed, 124 insertions(+), 3 deletions(-) create mode 100644 .DS_Store create mode 100644 WebAPI/.DS_Store create mode 100644 WebAPI/Controllers/AdminController.cs diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..2a046ec16deeeab0a8f411af41118b3d5a918961 GIT binary patch literal 6148 zcmeHK&u`N(6n<{IEnS6F!9cqpMdDgUJE4tSiHLRPVT-6vL>`L7$}Xx)OpeR4VI|X3 z12PpOqT4j37$w^9b{$Rur@+6afLy!RXh`pAPAOLHul1W?9dq<#bU^QDLP;+XqaYCh z7;?LKfO7Cd8CpcU)P?ty5)#Tk0()k0K3SX_;Kazx@dh30A=3!#P`$?jt(3;dKgH;X zqGBv|(~4Ewh?U`8xW)Qtv92PUK=d(krkK6VKS4%;ywT+|XWy+D9z6nA$oYc9DJNlW zv-ypc%9X9{9dF00c`y5K#G*eN&gNNXm_Cwx;+e@#nEC=-#Zn2HjH_cDncAa zaCvba^H3~0V$Q=%ar=6}t9sQzeSf*Uci8Y-N6l5kU$zd9Pa6L5-J{j2>RrEe=l+wy zIGJ$q0q+lEIAN4sF}Mc#MGNzP+fR8SxKw@3S^GM?sDM$&lY4+Or+`zyDR5B%xj*j*>$E~dY9r+U!V=d~+6uKGE@_eqdO)fOq6a`BZmibD@kX)JRH`cF z4FA9{Aa48!{0k>|v%8HP$5q7zA=tHc$KIVco_#y(bhbn!>cj2^QI&`sRF>r>G&zOG zxz3b==~;#pz!Q1YAW0D= z`AWOFcyT9#FJdlcTp(L-I!l+7MvyLZR=Q$T1h7v z#`VtNH9x(SGW0I*JKn3nAGOOX4H+e!Ao2$a5OjU0yg3M>t{m0nFzUt%+tLG0$tktV z)${X5o2%}|*80V&d%m%`{dm>gezhlbsrV_d8lF|gQ_4h0~#V4J5;AVx=#ndd5G+NJgJyRys{rB)6rA> zlCiWvyL1L!32ksWt*v&-r_@eap{LN4*d08(CNP28AJ6a;Jb z%(nKUm&bux`8 { configuration["GDriveBackupDirectory"] }; + body.MimeType = "application/octet-stream"; + + var fsSource = new FileStream(localDatabasePath, FileMode.Open, FileAccess.Read); + + CreateMediaUpload request = googleDriveHelper.Service.Files.Create(body, fsSource, body.MimeType); + request.Fields = "id"; + + var response = request.Upload(); + + + logsController.AddEntry(new LogEntry + { + Title = "Backup success", + Type = LogEntryType.info, + LogType = LogType.backup, + CreatedAt = DateTime.UtcNow + }); + return Ok(); + } + catch (Exception e) + { + logsController.AddEntry(new LogEntry + { + Title = "Backup error", + Type = LogEntryType.error, + LogType = LogType.backup, + Message = e.ToString(), + CreatedAt = DateTime.UtcNow + }); + return BadRequest(e.ToString()); + } + } + } +} \ No newline at end of file diff --git a/WebAPI/Controllers/LayersController.cs b/WebAPI/Controllers/LayersController.cs index 773240d..bf1ed94 100644 --- a/WebAPI/Controllers/LayersController.cs +++ b/WebAPI/Controllers/LayersController.cs @@ -165,6 +165,7 @@ namespace WebAPI.Controllers { Title = "Import error", Type = LogEntryType.error, + LogType = LogType.import, Message = e.ToString(), CreatedAt = DateTime.UtcNow }); @@ -294,9 +295,9 @@ namespace WebAPI.Controllers { Title = $"Import Success, {importWorker.Name}", Type = LogEntryType.info, + LogType = LogType.import, CreatedAt = DateTime.UtcNow }); - } private Layer AddLayer(Layer input, Guid currentUserId) { diff --git a/WebAPI/Controllers/LogsController.cs b/WebAPI/Controllers/LogsController.cs index 2e12bcf..46d64a9 100644 --- a/WebAPI/Controllers/LogsController.cs +++ b/WebAPI/Controllers/LogsController.cs @@ -29,6 +29,9 @@ namespace WebAPI.Controllers case LogType.import: type = "Import"; break; + case LogType.backup: + type = "Backup"; + break; default: type = "Other"; // should never happen break; diff --git a/WebAPI/Models/LogEntry.cs b/WebAPI/Models/LogEntry.cs index 5e0b970..a4d9193 100644 --- a/WebAPI/Models/LogEntry.cs +++ b/WebAPI/Models/LogEntry.cs @@ -9,7 +9,8 @@ namespace WebAPI.Models error, } public enum LogType { - import + import, + backup } public class LogEntry { diff --git a/WebAPI/appsettings.Development.json b/WebAPI/appsettings.Development.json index 8da826e..4786320 100644 --- a/WebAPI/appsettings.Development.json +++ b/WebAPI/appsettings.Development.json @@ -16,6 +16,8 @@ "exportDirectory": "1eTyCUzYbzVQB8f8sbNmvnebFXyW2-axt", "appLogsFile": "13PuDvS3_HAYoSLOCgKexzlzIDLUilkApUF8QiJMTae0", "apiLocalUrl": "localhost:5400", + "dbBackupFile": "/home/mz/backups/diunabi-morska", + "GDriveBackupDirectory": "1FEcdtVcF2cuqCROdq-vlBNs__th1M8_P", "Kestrel": { "Endpoints": { "Http": { diff --git a/WebAPI/appsettings.json b/WebAPI/appsettings.json index 900c42f..9c18f0f 100644 --- a/WebAPI/appsettings.json +++ b/WebAPI/appsettings.json @@ -13,9 +13,11 @@ "GoogleClientId": "#{google-backend-login-client-id}#", "Secret": "#{google-backend-login-secret}#", "apiKey": "#{api-key}#", - "exportDirectory": "#{export-directory}#", + "exportDirectory": "#{export-directory}#", "appLogsFile": "#{app-logs-file}#", "apiLocalUrl": "#{api-local-url}#", + "dbBackupFile": "#{db-backup-file}", + "GDriveBackupDirectory": "#{gdrive-backup-directory}", "Kestrel": { "Endpoints": { "Http": {