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 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] };
|
Loading…
Reference in a new issue