| 
									
										
										
										
											2017-05-03 07:30:18 +02:00
										 |  |  | // Package with the mostly static content (models) of this microservice
 | 
					
						
							| 
									
										
										
										
											2017-03-25 16:09:17 +01:00
										 |  |  | package models | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"io/ioutil" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-04 19:28:46 +02:00
										 |  |  | 	"github.com/BurntSushi/toml" | 
					
						
							| 
									
										
										
										
											2017-03-30 16:09:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/genofire/hs_master-kss-monolith/lib/database" | 
					
						
							| 
									
										
										
										
											2017-03-30 17:02:20 +02:00
										 |  |  | 	"github.com/genofire/hs_master-kss-monolith/lib/log" | 
					
						
							| 
									
										
										
										
											2017-03-25 16:09:17 +01:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-03 07:30:18 +02:00
										 |  |  | // Config file for this daemon (mor information at the config_example.conf in this git repository)
 | 
					
						
							| 
									
										
										
										
											2017-03-25 16:09:17 +01:00
										 |  |  | type Config struct { | 
					
						
							| 
									
										
										
										
											2017-05-03 07:30:18 +02:00
										 |  |  | 	// address under which the api and static content of the webserver runs
 | 
					
						
							| 
									
										
										
										
											2017-04-28 10:27:36 +02:00
										 |  |  | 	WebserverBind string `toml:"webserver_bind"` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// path to deliver static content
 | 
					
						
							|  |  |  | 	Webroot string `toml:"webroot"` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	Database    database.Config   `toml:"database"` | 
					
						
							|  |  |  | 	GoodRelease GoodReleaseConfig `toml:"good_release"` | 
					
						
							|  |  |  | 	CacheClean  CacheWorkerConfig `toml:"cache_clean"` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-03 07:30:18 +02:00
										 |  |  | 	// path to the svg image templaes to show availablity of a given good with a traffic light food labeling system
 | 
					
						
							| 
									
										
										
										
											2017-04-28 10:27:36 +02:00
										 |  |  | 	GoodAvailablityTemplate string `toml:"good_availablity_template"` | 
					
						
							| 
									
										
										
										
											2017-05-12 10:54:05 +02:00
										 |  |  | 	GoodFreshnessTemplate string `toml:"good_freshness_template"` | 
					
						
							| 
									
										
										
										
											2017-04-28 10:27:36 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-03 07:30:18 +02:00
										 |  |  | 	// URLs to other microservices that this services uses
 | 
					
						
							| 
									
										
										
										
											2017-04-07 13:13:37 +02:00
										 |  |  | 	MicroserviceDependencies struct { | 
					
						
							|  |  |  | 		Product    string `toml:"product"` | 
					
						
							|  |  |  | 		Permission string `toml:"permission"` | 
					
						
							|  |  |  | 	} `toml:"microservice_dependencies"` | 
					
						
							| 
									
										
										
										
											2017-03-25 16:09:17 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-03 07:30:18 +02:00
										 |  |  | // Configuration of the Worker to clean the cache from values of other microservice
 | 
					
						
							| 
									
										
										
										
											2017-04-07 11:56:28 +02:00
										 |  |  | type CacheWorkerConfig struct { | 
					
						
							| 
									
										
										
										
											2017-05-03 07:30:18 +02:00
										 |  |  | 	// Run Worker every Duration
 | 
					
						
							| 
									
										
										
										
											2017-04-07 11:56:28 +02:00
										 |  |  | 	Every Duration | 
					
						
							| 
									
										
										
										
											2017-05-03 07:30:18 +02:00
										 |  |  | 	// Remove cache, which is not used since Duration
 | 
					
						
							| 
									
										
										
										
											2017-04-07 11:56:28 +02:00
										 |  |  | 	After Duration | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-03 07:30:18 +02:00
										 |  |  | // Configuration of the Worker to release locked goods after a time period
 | 
					
						
							| 
									
										
										
										
											2017-04-07 11:56:28 +02:00
										 |  |  | type GoodReleaseConfig struct { | 
					
						
							| 
									
										
										
										
											2017-05-03 07:30:18 +02:00
										 |  |  | 	// Run worker every Duration
 | 
					
						
							| 
									
										
										
										
											2017-04-07 11:56:28 +02:00
										 |  |  | 	Every Duration `toml:"every"` | 
					
						
							| 
									
										
										
										
											2017-05-03 07:30:18 +02:00
										 |  |  | 	// unlock which is not used since Duration
 | 
					
						
							| 
									
										
										
										
											2017-04-28 10:27:36 +02:00
										 |  |  | 	After Duration `toml:"after"` | 
					
						
							| 
									
										
										
										
											2017-04-07 11:56:28 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-03 07:30:18 +02:00
										 |  |  | // Function that reads a config model from a given path of a yml file
 | 
					
						
							| 
									
										
										
										
											2017-03-25 16:09:17 +01:00
										 |  |  | func ReadConfigFile(path string) *Config { | 
					
						
							|  |  |  | 	config := &Config{} | 
					
						
							|  |  |  | 	file, err := ioutil.ReadFile(path) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2017-03-30 16:09:44 +02:00
										 |  |  | 		log.Log.Panic(err) | 
					
						
							| 
									
										
										
										
											2017-03-25 16:09:17 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if err := toml.Unmarshal(file, config); err != nil { | 
					
						
							| 
									
										
										
										
											2017-03-30 16:09:44 +02:00
										 |  |  | 		log.Log.Panic(err) | 
					
						
							| 
									
										
										
										
											2017-03-25 16:09:17 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return config | 
					
						
							|  |  |  | } |