| 
									
										
										
										
											2021-10-23 16:42:20 -08:00
										 |  |  | import { BaseAPI } from "../_base"; | 
					
						
							| 
									
										
										
										
											2022-05-21 21:22:02 +02:00
										 |  |  | import { AllBackups, BackupOptions, CreateBackup } from "~/types/api-types/admin"; | 
					
						
							| 
									
										
										
										
											2021-08-07 15:12:25 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | const prefix = "/api"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const routes = { | 
					
						
							|  |  |  |   backupsAvailable: `${prefix}/backups/available`, | 
					
						
							|  |  |  |   backupsExportDatabase: `${prefix}/backups/export/database`, | 
					
						
							|  |  |  |   backupsUpload: `${prefix}/backups/upload`, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   backupsFileNameDownload: (fileName: string) => `${prefix}/backups/${fileName}/download`, | 
					
						
							|  |  |  |   backupsFileNameImport: (fileName: string) => `${prefix}/backups/${fileName}/import`, | 
					
						
							|  |  |  |   backupsFileNameDelete: (fileName: string) => `${prefix}/backups/${fileName}/delete`, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export class BackupAPI extends BaseAPI { | 
					
						
							|  |  |  |   /** Returns a list of avaiable .zip files for import into Mealie. | 
					
						
							|  |  |  |    */ | 
					
						
							|  |  |  |   async getAll() { | 
					
						
							|  |  |  |     return await this.requests.get<AllBackups>(routes.backupsAvailable); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /** Generates a backup of the recipe database in json format. | 
					
						
							|  |  |  |    */ | 
					
						
							| 
									
										
										
										
											2022-05-21 21:22:02 +02:00
										 |  |  |   async createOne(payload: CreateBackup) { | 
					
						
							| 
									
										
										
										
											2021-08-07 15:12:25 -08:00
										 |  |  |     return await this.requests.post(routes.backupsExportDatabase, payload); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /** Import a database backup file generated from Mealie. | 
					
						
							|  |  |  |    */ | 
					
						
							|  |  |  |   async restoreDatabase(fileName: string, payload: BackupOptions) { | 
					
						
							| 
									
										
										
										
											2021-08-21 00:46:43 -08:00
										 |  |  |     return await this.requests.post(routes.backupsFileNameImport(fileName), {name: fileName, ...payload}); | 
					
						
							| 
									
										
										
										
											2021-08-07 15:12:25 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /** Removes a database backup from the file system | 
					
						
							|  |  |  |    */ | 
					
						
							|  |  |  |   async deleteOne(fileName: string) { | 
					
						
							|  |  |  |     return await this.requests.delete(routes.backupsFileNameDelete(fileName)); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |