Add type definition
This commit is contained in:
		
							parent
							
								
									bc23ec0a95
								
							
						
					
					
						commit
						3feeaccf59
					
				|  | @ -6,7 +6,7 @@ import deepEqual = require('deep-equal'); | |||
| import parse from '../../common/text'; | ||||
| import Post 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 DriveFile from '../../models/drive-file'; | ||||
| import Watching from '../../models/post-watching'; | ||||
|  | @ -24,7 +24,7 @@ import config from '../../../conf'; | |||
|  * @param {any} app | ||||
|  * @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
 | ||||
| 	const [text, textErr] = $(params.text).optional.string().pipe(isValidText).$; | ||||
| 	if (textErr) return rej('invalid text'); | ||||
|  |  | |||
|  | @ -1,3 +1,5 @@ | |||
| import * as mongo from 'mongodb'; | ||||
| 
 | ||||
| import db from '../../db/mongodb'; | ||||
| 
 | ||||
| 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 { | ||||
| 	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 { IPost } from './post'; | ||||
| 
 | ||||
| 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); | ||||
| } | ||||
| 
 | ||||
| export interface IUser { | ||||
| export type IUser = { | ||||
| 	_id: mongo.ObjectID; | ||||
| 	created_at: Date; | ||||
| 	email: string; | ||||
| 	followers_count: number; | ||||
| 	following_count: number; | ||||
| 	links: 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[]; | ||||
| }; | ||||
|  |  | |||
|  | @ -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] }; | ||||
		Loading…
	
		Reference in New Issue