| 
									
										
										
										
											2018-03-31 10:51:37 -04:00
										 |  |  | const Note = require('../entities/note'); | 
					
						
							|  |  |  | const NoteRevision = require('../entities/note_revision'); | 
					
						
							| 
									
										
										
										
											2018-04-01 11:42:12 -04:00
										 |  |  | const Image = require('../entities/image'); | 
					
						
							| 
									
										
										
										
											2018-03-31 22:15:06 -04:00
										 |  |  | const NoteImage = require('../entities/note_image'); | 
					
						
							| 
									
										
										
										
											2018-03-31 10:51:37 -04:00
										 |  |  | const Branch = require('../entities/branch'); | 
					
						
							| 
									
										
										
										
											2018-08-02 22:48:21 +02:00
										 |  |  | const Attribute = require('../entities/attribute'); | 
					
						
							| 
									
										
										
										
											2018-04-01 12:03:21 -04:00
										 |  |  | const RecentNote = require('../entities/recent_note'); | 
					
						
							| 
									
										
										
										
											2018-04-01 17:38:24 -04:00
										 |  |  | const ApiToken = require('../entities/api_token'); | 
					
						
							| 
									
										
										
										
											2018-05-22 00:22:43 -04:00
										 |  |  | const Option = require('../entities/option'); | 
					
						
							| 
									
										
										
										
											2018-03-31 10:51:37 -04:00
										 |  |  | const repository = require('../services/repository'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-16 23:00:04 +02:00
										 |  |  | const ENTITY_NAME_TO_ENTITY = { | 
					
						
							| 
									
										
										
										
											2018-08-10 14:31:57 +02:00
										 |  |  |     "attributes": Attribute, | 
					
						
							|  |  |  |     "images": Image, | 
					
						
							|  |  |  |     "note_images": NoteImage, | 
					
						
							|  |  |  |     "branches": Branch, | 
					
						
							|  |  |  |     "notes": Note, | 
					
						
							|  |  |  |     "note_revisions": NoteRevision, | 
					
						
							|  |  |  |     "recent_notes": RecentNote, | 
					
						
							|  |  |  |     "options": Option, | 
					
						
							|  |  |  |     "api_tokens": ApiToken | 
					
						
							| 
									
										
										
										
											2018-08-09 20:08:00 +02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-16 23:00:04 +02:00
										 |  |  | function getEntityFromEntityName(entityName) { | 
					
						
							|  |  |  |     if (!(entityName in ENTITY_NAME_TO_ENTITY)) { | 
					
						
							|  |  |  |         throw new Error(`Entity for table ${entityName} not found!`); | 
					
						
							| 
									
										
										
										
											2018-08-10 14:31:57 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-16 23:00:04 +02:00
										 |  |  |     return ENTITY_NAME_TO_ENTITY[entityName]; | 
					
						
							| 
									
										
										
										
											2018-08-09 20:08:00 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-31 10:51:37 -04:00
										 |  |  | function createEntityFromRow(row) { | 
					
						
							|  |  |  |     let entity; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-02 22:48:21 +02:00
										 |  |  |     if (row.attributeId) { | 
					
						
							|  |  |  |         entity = new Attribute(row); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-03-31 10:51:37 -04:00
										 |  |  |     else if (row.noteRevisionId) { | 
					
						
							|  |  |  |         entity = new NoteRevision(row); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-03-31 22:15:06 -04:00
										 |  |  |     else if (row.noteImageId) { | 
					
						
							|  |  |  |         entity = new NoteImage(row); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-04-01 11:42:12 -04:00
										 |  |  |     else if (row.imageId) { | 
					
						
							|  |  |  |         entity = new Image(row); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-04-01 12:03:21 -04:00
										 |  |  |     else if (row.branchId && row.notePath) { | 
					
						
							|  |  |  |         entity = new RecentNote(row); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-04-01 17:38:24 -04:00
										 |  |  |     else if (row.apiTokenId) { | 
					
						
							|  |  |  |         entity = new ApiToken(row); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-03-31 10:51:37 -04:00
										 |  |  |     else if (row.branchId) { | 
					
						
							|  |  |  |         entity = new Branch(row); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     else if (row.noteId) { | 
					
						
							|  |  |  |         entity = new Note(row); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-05-22 00:22:43 -04:00
										 |  |  |     else if (row.name) { | 
					
						
							|  |  |  |         entity = new Option(row); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-03-31 10:51:37 -04:00
										 |  |  |     else { | 
					
						
							|  |  |  |         throw new Error('Unknown entity type for row: ' + JSON.stringify(row)); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return entity; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = { | 
					
						
							| 
									
										
										
										
											2018-08-09 20:08:00 +02:00
										 |  |  |     createEntityFromRow, | 
					
						
							| 
									
										
										
										
											2018-08-16 23:00:04 +02:00
										 |  |  |     getEntityFromEntityName | 
					
						
							| 
									
										
										
										
											2018-08-09 20:08:00 +02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | repository.setEntityConstructor(module.exports); |