mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	Impelements: - http://unleash.host.com/api/client/seen-toggles - http://unleash.host.com/api/metrics/feature-toggles - http://localhost:4242/api/client/applications - http://localhost:4242/api/client/applications/:appName
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| const COLUMNS = ['app_name', 'strategies'];
 | |
| const TABLE = 'client_strategies';
 | |
| 
 | |
| const mapRow = (row) => ({
 | |
|     appName: row.app_name,
 | |
|     strategies: row.strategies,
 | |
| });
 | |
| 
 | |
| class ClientStrategyStore {
 | |
|     constructor (db) {
 | |
|         this.db = db;
 | |
|     }
 | |
| 
 | |
|     updateRow (appName, strategies) {
 | |
|         return this.db(TABLE)
 | |
|             .where('app_name', appName)  // eslint-disable-line
 | |
|             .update({
 | |
|                 strategies: JSON.stringify(strategies),
 | |
|                 updated_at: 'now()', // eslint-disable-line
 | |
|             });
 | |
|     }
 | |
| 
 | |
|     insertNewRow (appName, strategies) {
 | |
|         return this.db(TABLE).insert({
 | |
|             app_name: appName,  // eslint-disable-line
 | |
|             strategies: JSON.stringify(strategies),
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     insert (appName, strategies) {
 | |
|         return this.db(TABLE)
 | |
|             .count('*')
 | |
|             .where('app_name', appName)
 | |
|             .map(row => ({ count: row.count }))
 | |
|             .then(rows => {
 | |
|                 if (rows[0].count > 0) {
 | |
|                     return this.updateRow(appName, strategies);
 | |
|                 } else {
 | |
|                     return this.insertNewRow(appName, strategies);
 | |
|                 }
 | |
|             });
 | |
|     }
 | |
| 
 | |
|     getAll () {
 | |
|         return this.db
 | |
|             .select(COLUMNS)
 | |
|             .from(TABLE)
 | |
|             .map(mapRow);
 | |
|     }
 | |
| 
 | |
|     getByAppName (appName) {
 | |
|         return this.db
 | |
|             .select(COLUMNS)
 | |
|             .where('app_name', appName)
 | |
|             .from(TABLE)
 | |
|             .map(mapRow);
 | |
|     }
 | |
| };
 | |
| 
 | |
| module.exports = ClientStrategyStore;
 |