Add type definition
This commit is contained in:
parent
bc23ec0a95
commit
3feeaccf59
4 changed files with 57 additions and 4 deletions
|
@ -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[];
|
||||
};
|
||||
|
|
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] };
|
Loading…
Reference in a new issue