Add type definition
This commit is contained in:
		| @@ -6,7 +6,7 @@ import deepEqual = require('deep-equal'); | |||||||
| import parse from '../../common/text'; | import parse from '../../common/text'; | ||||||
| import Post from '../../models/post'; | import Post from '../../models/post'; | ||||||
| import { isValidText } from '../../models/post'; | import { isValidText } from '../../models/post'; | ||||||
| import User from '../../models/user'; | import { default as User, IUser } from '../../models/user'; | ||||||
| import Following from '../../models/following'; | import Following from '../../models/following'; | ||||||
| import DriveFile from '../../models/drive-file'; | import DriveFile from '../../models/drive-file'; | ||||||
| import Watching from '../../models/post-watching'; | import Watching from '../../models/post-watching'; | ||||||
| @@ -24,7 +24,7 @@ import config from '../../../conf'; | |||||||
|  * @param {any} app |  * @param {any} app | ||||||
|  * @return {Promise<any>} |  * @return {Promise<any>} | ||||||
|  */ |  */ | ||||||
| module.exports = (params, user, app) => new Promise(async (res, rej) => { | module.exports = (params, user: IUser, app) => new Promise(async (res, rej) => { | ||||||
| 	// Get 'text' parameter | 	// Get 'text' parameter | ||||||
| 	const [text, textErr] = $(params.text).optional.string().pipe(isValidText).$; | 	const [text, textErr] = $(params.text).optional.string().pipe(isValidText).$; | ||||||
| 	if (textErr) return rej('invalid text'); | 	if (textErr) return rej('invalid text'); | ||||||
|   | |||||||
| @@ -1,3 +1,5 @@ | |||||||
|  | import * as mongo from 'mongodb'; | ||||||
|  |  | ||||||
| import db from '../../db/mongodb'; | import db from '../../db/mongodb'; | ||||||
|  |  | ||||||
| export default db.get('posts') as any; // fuck type definition | export default db.get('posts') as any; // fuck type definition | ||||||
| @@ -5,3 +7,15 @@ export default db.get('posts') as any; // fuck type definition | |||||||
| export function isValidText(text: string): boolean { | export function isValidText(text: string): boolean { | ||||||
| 	return text.length <= 1000 && text.trim() != ''; | 	return text.length <= 1000 && text.trim() != ''; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | export type IPost = { | ||||||
|  | 	_id: mongo.ObjectID; | ||||||
|  | 	created_at: Date; | ||||||
|  | 	media_ids: mongo.ObjectID[]; | ||||||
|  | 	reply_to_id: mongo.ObjectID; | ||||||
|  | 	repost_id: mongo.ObjectID; | ||||||
|  | 	poll: {}; // todo | ||||||
|  | 	text: string; | ||||||
|  | 	user_id: mongo.ObjectID; | ||||||
|  | 	app_id: mongo.ObjectID; | ||||||
|  | }; | ||||||
|   | |||||||
| @@ -1,4 +1,7 @@ | |||||||
|  | import * as mongo from 'mongodb'; | ||||||
|  |  | ||||||
| import db from '../../db/mongodb'; | import db from '../../db/mongodb'; | ||||||
|  | import { IPost } from './post'; | ||||||
|  |  | ||||||
| const collection = db.get('users'); | const collection = db.get('users'); | ||||||
|  |  | ||||||
| @@ -31,6 +34,39 @@ export function isValidBirthday(birthday: string): boolean { | |||||||
| 	return typeof birthday == 'string' && /^([0-9]{4})\-([0-9]{2})-([0-9]{2})$/.test(birthday); | 	return typeof birthday == 'string' && /^([0-9]{4})\-([0-9]{2})-([0-9]{2})$/.test(birthday); | ||||||
| } | } | ||||||
|  |  | ||||||
| export interface IUser { | export type IUser = { | ||||||
|  | 	_id: mongo.ObjectID; | ||||||
|  | 	created_at: Date; | ||||||
|  | 	email: string; | ||||||
|  | 	followers_count: number; | ||||||
|  | 	following_count: number; | ||||||
|  | 	links: string[]; | ||||||
| 	name: string; | 	name: string; | ||||||
| } | 	password: string; | ||||||
|  | 	posts_count: number; | ||||||
|  | 	drive_capacity: number; | ||||||
|  | 	username: string; | ||||||
|  | 	username_lower: string; | ||||||
|  | 	token: string; | ||||||
|  | 	avatar_id: mongo.ObjectID; | ||||||
|  | 	banner_id: mongo.ObjectID; | ||||||
|  | 	data: any; | ||||||
|  | 	twitter: { | ||||||
|  | 		access_token: string; | ||||||
|  | 		access_token_secret: string; | ||||||
|  | 		user_id: string; | ||||||
|  | 		screen_name: string; | ||||||
|  | 	}; | ||||||
|  | 	description: string; | ||||||
|  | 	profile: { | ||||||
|  | 		location: string; | ||||||
|  | 		birthday: string; // 'YYYY-MM-DD' | ||||||
|  | 		tags: string[]; | ||||||
|  | 	}; | ||||||
|  | 	last_used_at: Date; | ||||||
|  | 	latest_post: IPost; | ||||||
|  | 	pinned_post_id: mongo.ObjectID; | ||||||
|  | 	is_pro: boolean; | ||||||
|  | 	is_suspended: boolean; | ||||||
|  | 	keywords: string[]; | ||||||
|  | }; | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								src/utils/type.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/utils/type.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | // https://github.com/Microsoft/TypeScript/issues/12215 | ||||||
|  | export type Diff<T extends string, U extends string> = ({ [P in T]: P } & { [P in U]: never } & { [x: string]: never })[T]; | ||||||
|  | export type Omit<T, K extends keyof T> = { [P in Diff<keyof T, K>]: T[P] }; | ||||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo