🧑💻 add backup solution for data
Co-authored-by: haraldnilsen <harald_998@hotmail.com> Signed-off-by: Sindre Kjelsrud <kjelsrudsindre@gmail.com>
This commit is contained in:
		
							parent
							
								
									48c17084df
								
							
						
					
					
						commit
						ccce73c939
					
				
					 6 changed files with 80 additions and 0 deletions
				
			
		
							
								
								
									
										0
									
								
								backend/cmd/db/backups/answer_backup.csv
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								backend/cmd/db/backups/answer_backup.csv
									
										
									
									
									
										Normal file
									
								
							|  | 
							
								
								
									
										0
									
								
								backend/cmd/db/backups/bugreport_backup.csv
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								backend/cmd/db/backups/bugreport_backup.csv
									
										
									
									
									
										Normal file
									
								
							|  | 
							
								
								
									
										0
									
								
								backend/cmd/db/backups/evaluation_backup.csv
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								backend/cmd/db/backups/evaluation_backup.csv
									
										
									
									
									
										Normal file
									
								
							|  | 
|  | @ -2,8 +2,10 @@ package db | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"database/sql" | 	"database/sql" | ||||||
|  | 	"encoding/csv" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"log" | 	"log" | ||||||
|  | 	"os" | ||||||
| 
 | 
 | ||||||
| 	_ "github.com/lib/pq" | 	_ "github.com/lib/pq" | ||||||
| ) | ) | ||||||
|  | @ -27,6 +29,28 @@ func InsertBugReport(bugText string) (error) { | ||||||
| 		log.Fatalf("Error connecting to the database: %v\n", err) | 		log.Fatalf("Error connecting to the database: %v\n", err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	// Write bugText to backup-file | ||||||
|  | 	file, err := os.OpenFile("cmd/db/backups/bugreport_backup.csv", os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600) | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatalln("error opening file", err) | ||||||
|  | 	} | ||||||
|  | 	defer file.Close() | ||||||
|  | 
 | ||||||
|  | 	// Prepare the row to be written | ||||||
|  | 	rowSlice := []string{bugText} | ||||||
|  | 
 | ||||||
|  | 	// Create a CSV writer and write the row | ||||||
|  | 	csvwriter := csv.NewWriter(file) | ||||||
|  | 	if err := csvwriter.Write(rowSlice); err != nil { | ||||||
|  | 		log.Fatalln("error writing record to file", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// Flush the writer and check for errors | ||||||
|  | 	csvwriter.Flush() | ||||||
|  | 	if err := csvwriter.Error(); err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	insertStatement := ` | 	insertStatement := ` | ||||||
| 	INSERT INTO FeilRapport (feiltekst) | 	INSERT INTO FeilRapport (feiltekst) | ||||||
| 	VALUES ($1) | 	VALUES ($1) | ||||||
|  |  | ||||||
|  | @ -2,8 +2,10 @@ package db | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"database/sql" | 	"database/sql" | ||||||
|  | 	"encoding/csv" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"log" | 	"log" | ||||||
|  | 	"os" | ||||||
| 
 | 
 | ||||||
| 	_ "github.com/lib/pq" | 	_ "github.com/lib/pq" | ||||||
| ) | ) | ||||||
|  | @ -27,6 +29,28 @@ func InsertEvaluation(evaluationText string) (error) { | ||||||
| 		log.Fatalf("Error connecting to the database: %v\n", err) | 		log.Fatalf("Error connecting to the database: %v\n", err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	// Write evaluationText to backup-file | ||||||
|  | 	file, err := os.OpenFile("cmd/db/backups/evaluation_backup.csv", os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600) | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatalln("error opening file", err) | ||||||
|  | 	} | ||||||
|  | 	defer file.Close() | ||||||
|  | 
 | ||||||
|  | 	// Prepare the row to be written | ||||||
|  | 	rowSlice := []string{evaluationText} | ||||||
|  | 
 | ||||||
|  | 	// Create a CSV writer and write the row | ||||||
|  | 	csvwriter := csv.NewWriter(file) | ||||||
|  | 	if err := csvwriter.Write(rowSlice); err != nil { | ||||||
|  | 		log.Fatalln("error writing record to file", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// Flush the writer and check for errors | ||||||
|  | 	csvwriter.Flush() | ||||||
|  | 	if err := csvwriter.Error(); err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	insertStatement := ` | 	insertStatement := ` | ||||||
| 	INSERT INTO Evaluering (evalueringtekst) | 	INSERT INTO Evaluering (evalueringtekst) | ||||||
| 	VALUES ($1) | 	VALUES ($1) | ||||||
|  |  | ||||||
|  | @ -2,9 +2,12 @@ package db | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"database/sql" | 	"database/sql" | ||||||
|  | 	"encoding/csv" | ||||||
| 	"encoding/json" | 	"encoding/json" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"log" | 	"log" | ||||||
|  | 	"os" | ||||||
|  | 	"strconv" | ||||||
| 
 | 
 | ||||||
| 	_ "github.com/lib/pq" | 	_ "github.com/lib/pq" | ||||||
| ) | ) | ||||||
|  | @ -16,6 +19,11 @@ type FormAnswer struct { | ||||||
| 
 | 
 | ||||||
| type AllFormAnswers []FormAnswer | type AllFormAnswers []FormAnswer | ||||||
| 
 | 
 | ||||||
|  | type CSVRow struct { | ||||||
|  | 	RespondentID string | ||||||
|  | 	AllAnswers string | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func InsertUserAnswers(respondentId int, allAnswers string) (error) { | func InsertUserAnswers(respondentId int, allAnswers string) (error) { | ||||||
| 
 | 
 | ||||||
| 	// Connection string | 	// Connection string | ||||||
|  | @ -36,6 +44,30 @@ func InsertUserAnswers(respondentId int, allAnswers string) (error) { | ||||||
| 		log.Fatalf("Error connecting to the database: %v\n", err) | 		log.Fatalf("Error connecting to the database: %v\n", err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	// Write answers to backup-file | ||||||
|  | 	file, err := os.OpenFile("cmd/db/backups/answer_backup.csv", os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600) | ||||||
|  |     if err != nil { | ||||||
|  |         fmt.Println(err) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 	var row = CSVRow{strconv.Itoa(respondentId), allAnswers} | ||||||
|  | 
 | ||||||
|  | 	rowSlice := []string{row.RespondentID, row.AllAnswers} | ||||||
|  | 
 | ||||||
|  | 	csvwriter := csv.NewWriter(file) | ||||||
|  | 
 | ||||||
|  | 	if err := csvwriter.Write(rowSlice); err != nil { | ||||||
|  | 		log.Fatalln("error writing record to file", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	csvwriter.Flush() | ||||||
|  | 
 | ||||||
|  | 	// Check for errors from flushing | ||||||
|  | 	if err := csvwriter.Error(); err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  |   | ||||||
|  | 	// Convert answer format | ||||||
| 	var convertedFormAnswers = convertAnswerFormat(allAnswers) | 	var convertedFormAnswers = convertAnswerFormat(allAnswers) | ||||||
| 
 | 
 | ||||||
| 	for _,formanswer := range convertedFormAnswers { | 	for _,formanswer := range convertedFormAnswers { | ||||||
|  |  | ||||||
		Reference in a new issue
	
	 Sindre Kjelsrud
						Sindre Kjelsrud