mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	add splash-controller and cascade migration
This commit is contained in:
		
							parent
							
								
									d73293c576
								
							
						
					
					
						commit
						cc516618a1
					
				
							
								
								
									
										76
									
								
								src/lib/routes/admin-api/user-splash-controller.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								src/lib/routes/admin-api/user-splash-controller.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,76 @@ | |||||||
|  | import { Response } from 'express'; | ||||||
|  | 
 | ||||||
|  | import Controller from '../controller'; | ||||||
|  | import { Logger } from '../../logger'; | ||||||
|  | import { IUnleashConfig } from '../../types/option'; | ||||||
|  | import { IUnleashServices } from '../../types/services'; | ||||||
|  | import UserSplashService from '../../services/user-splash-service'; | ||||||
|  | import { IAuthRequest } from '../unleash-types'; | ||||||
|  | 
 | ||||||
|  | interface ISplashBody { | ||||||
|  |     seen: boolean; | ||||||
|  |     splashId: string; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class UserSplashController extends Controller { | ||||||
|  |     private logger: Logger; | ||||||
|  |     private userSplashService: UserSplashService; | ||||||
|  | 
 | ||||||
|  |     constructor( | ||||||
|  |         config: IUnleashConfig, | ||||||
|  |         { userSplashService }: Pick<IUnleashServices, 'userSplashService'>, | ||||||
|  |     ) { | ||||||
|  |         super(config); | ||||||
|  |         this.logger = config.getLogger('splash-controller.ts'); | ||||||
|  |         this.userSplashService = userSplashService; | ||||||
|  | 
 | ||||||
|  |         this.post('/', this.recordSplash); | ||||||
|  |         this.put('/:id', this.updateSplashSettings); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private async recordSplash( | ||||||
|  |         req: IAuthRequest<any, any, ISplashBody, any>, | ||||||
|  |         res: Response, | ||||||
|  |     ): Promise<void> { | ||||||
|  |         const BAD_REQUEST = 400; | ||||||
|  |         const { user } = req; | ||||||
|  | 
 | ||||||
|  |         const { splashId } = req.body; | ||||||
|  | 
 | ||||||
|  |         if (!splashId) { | ||||||
|  |             res.status(BAD_REQUEST).json({ | ||||||
|  |                 error: 'splashId must be present.', | ||||||
|  |             }); | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         const splash = { | ||||||
|  |             ...req.body, | ||||||
|  |             userId: user.id, | ||||||
|  |             seen: req.body.seen || false, | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         const updated = await this.userSplashService.updateSplash(splash); | ||||||
|  |         res.json(updated); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private async updateSplashSettings( | ||||||
|  |         req: IAuthRequest<any, any, ISplashBody, any>, | ||||||
|  |         res: Response, | ||||||
|  |     ): Promise<void> { | ||||||
|  |         const { user } = req; | ||||||
|  |         const { id } = req.params; | ||||||
|  | 
 | ||||||
|  |         const splash = { | ||||||
|  |             ...req.body, | ||||||
|  |             splashId: id, | ||||||
|  |             userId: user.id, | ||||||
|  |             seen: req.body.seen || false, | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         const updated = await this.userSplashService.updateSplash(splash); | ||||||
|  |         res.json(updated); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | module.exports = UserSplashController; | ||||||
							
								
								
									
										16
									
								
								src/migrations/20211109123505-add-cascade-for-user-splash.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/migrations/20211109123505-add-cascade-for-user-splash.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | |||||||
|  | exports.up = function (db, cb) { | ||||||
|  |   db.runSql( | ||||||
|  |       ` | ||||||
|  |   ALTER TABLE user_splash DROP CONSTRAINT user_splash_user_id_fkey; | ||||||
|  |   ALTER TABLE user_splash  | ||||||
|  |       ADD CONSTRAINT user_splash_user_id_fkey | ||||||
|  |       FOREIGN KEY (user_id)  | ||||||
|  |       REFERENCES users(id) ON DELETE CASCADE; | ||||||
|  | `,
 | ||||||
|  |       cb, | ||||||
|  |   ); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | exports.down = function (db, cb) { | ||||||
|  |   db.runSql('', cb); | ||||||
|  | }; | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user