[API] Implement some Emoji APIs
This commit is contained in:
		
							parent
							
								
									31c3f6abf7
								
							
						
					
					
						commit
						3487ddabea
					
				
					 5 changed files with 117 additions and 2 deletions
				
			
		| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
 | 
					import * as mongo from 'mongodb';
 | 
				
			||||||
import db from '../db/mongodb';
 | 
					import db from '../db/mongodb';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Emoji = db.get<IEmoji>('emoji');
 | 
					const Emoji = db.get<IEmoji>('emoji');
 | 
				
			||||||
| 
						 | 
					@ -8,6 +9,7 @@ Emoji.createIndex(['name', 'host'], { unique: true });
 | 
				
			||||||
export default Emoji;
 | 
					export default Emoji;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type IEmoji = {
 | 
					export type IEmoji = {
 | 
				
			||||||
 | 
						_id: mongo.ObjectID;
 | 
				
			||||||
	name: string;
 | 
						name: string;
 | 
				
			||||||
	host: string;
 | 
						host: string;
 | 
				
			||||||
	url: string;
 | 
						url: string;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
import $ from 'cafy';
 | 
					import $ from 'cafy';
 | 
				
			||||||
import Emoji from '../../../../models/emoji';
 | 
					import Emoji from '../../../../../models/emoji';
 | 
				
			||||||
import define from '../../define';
 | 
					import define from '../../../define';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const meta = {
 | 
					export const meta = {
 | 
				
			||||||
	desc: {
 | 
						desc: {
 | 
				
			||||||
							
								
								
									
										33
									
								
								src/server/api/endpoints/admin/emoji/list.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/server/api/endpoints/admin/emoji/list.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					import $ from 'cafy';
 | 
				
			||||||
 | 
					import Emoji from '../../../../../models/emoji';
 | 
				
			||||||
 | 
					import define from '../../../define';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const meta = {
 | 
				
			||||||
 | 
						desc: {
 | 
				
			||||||
 | 
							'ja-JP': 'カスタム絵文字を取得します。'
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						requireCredential: true,
 | 
				
			||||||
 | 
						requireAdmin: true,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						params: {
 | 
				
			||||||
 | 
							host: {
 | 
				
			||||||
 | 
								validator: $.str.optional.nullable,
 | 
				
			||||||
 | 
								default: null as any
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default define(meta, (ps) => new Promise(async (res, rej) => {
 | 
				
			||||||
 | 
						const emojis = await Emoji.find({
 | 
				
			||||||
 | 
							host: ps.host
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						res(emojis.map(e => ({
 | 
				
			||||||
 | 
							id: e._id,
 | 
				
			||||||
 | 
							name: e.name,
 | 
				
			||||||
 | 
							aliases: e.aliases,
 | 
				
			||||||
 | 
							host: e.host,
 | 
				
			||||||
 | 
							url: e.url
 | 
				
			||||||
 | 
						})));
 | 
				
			||||||
 | 
					}));
 | 
				
			||||||
							
								
								
									
										31
									
								
								src/server/api/endpoints/admin/emoji/remove.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								src/server/api/endpoints/admin/emoji/remove.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					import $ from 'cafy';
 | 
				
			||||||
 | 
					import Emoji from '../../../../../models/emoji';
 | 
				
			||||||
 | 
					import define from '../../../define';
 | 
				
			||||||
 | 
					import ID from '../../../../../misc/cafy-id';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const meta = {
 | 
				
			||||||
 | 
						desc: {
 | 
				
			||||||
 | 
							'ja-JP': 'カスタム絵文字を削除します。'
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						requireCredential: true,
 | 
				
			||||||
 | 
						requireAdmin: true,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						params: {
 | 
				
			||||||
 | 
							id: {
 | 
				
			||||||
 | 
								validator: $.type(ID)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default define(meta, (ps) => new Promise(async (res, rej) => {
 | 
				
			||||||
 | 
						const emoji = await Emoji.findOne({
 | 
				
			||||||
 | 
							_id: ps.id
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (emoji == null) return rej('emoji not found');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						await Emoji.remove({ _id: emoji._id });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						res();
 | 
				
			||||||
 | 
					}));
 | 
				
			||||||
							
								
								
									
										49
									
								
								src/server/api/endpoints/admin/emoji/update.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								src/server/api/endpoints/admin/emoji/update.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,49 @@
 | 
				
			||||||
 | 
					import $ from 'cafy';
 | 
				
			||||||
 | 
					import Emoji from '../../../../../models/emoji';
 | 
				
			||||||
 | 
					import define from '../../../define';
 | 
				
			||||||
 | 
					import ID from '../../../../../misc/cafy-id';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const meta = {
 | 
				
			||||||
 | 
						desc: {
 | 
				
			||||||
 | 
							'ja-JP': 'カスタム絵文字を更新します。'
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						requireCredential: true,
 | 
				
			||||||
 | 
						requireAdmin: true,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						params: {
 | 
				
			||||||
 | 
							id: {
 | 
				
			||||||
 | 
								validator: $.type(ID)
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							name: {
 | 
				
			||||||
 | 
								validator: $.str
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							url: {
 | 
				
			||||||
 | 
								validator: $.str
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							aliases: {
 | 
				
			||||||
 | 
								validator: $.arr($.str)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default define(meta, (ps) => new Promise(async (res, rej) => {
 | 
				
			||||||
 | 
						const emoji = await Emoji.findOne({
 | 
				
			||||||
 | 
							_id: ps.id
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (emoji == null) return rej('emoji not found');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						await Emoji.update({ _id: emoji._id }, {
 | 
				
			||||||
 | 
							$set: {
 | 
				
			||||||
 | 
								name: ps.name,
 | 
				
			||||||
 | 
								aliases: ps.aliases,
 | 
				
			||||||
 | 
								url: ps.url
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						res();
 | 
				
			||||||
 | 
					}));
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue