Skip to content
Snippets Groups Projects
Commit d53d45f7 authored by syuilo's avatar syuilo
Browse files

wip

parent c6ea5419
No related branches found
No related tags found
No related merge requests found
......@@ -4,22 +4,43 @@ import User, { ILocalUser, IUser } from '../../../../models/user';
import DriveFile from '../../../../models/drive-file';
import create from '../../../../services/note/create';
import { IApp } from '../../../../models/app';
import getParams from '../../get-params';
export const meta = {
params: {
visibility: {
def: $.str.optional().or(['public', 'home', 'followers', 'specified', 'private']),
default: 'public',
desc: {
ja: '投稿の公開範囲'
}
},
visibleUserIds: {
def: $.arr($.type(ID)).optional().unique().min(1),
desc: {
ja: '(投稿の公開範囲が specified の場合)投稿を閲覧できるユーザー'
}
},
text: {
def: $.str.optional().nullable().pipe(isValidText),
default: null,
desc: {
ja: '投稿内容'
}
},
}
};
/**
* Create a note
*/
module.exports = (params: any, user: ILocalUser, app: IApp) => new Promise(async (res, rej) => {
// Get 'visibility' parameter
const [visibility = 'public', visibilityErr] = $.str.optional().or(['public', 'home', 'followers', 'specified', 'private']).get(params.visibility);
if (visibilityErr) return rej('invalid visibility');
// Get 'visibleUserIds' parameter
const [visibleUserIds, visibleUserIdsErr] = $.arr($.type(ID)).optional().unique().min(1).get(params.visibleUserIds);
if (visibleUserIdsErr) return rej('invalid visibleUserIds');
const [ps, psErr] = getParams(meta, params);
if (psErr) return rej(psErr);
let visibleUsers: IUser[] = [];
if (visibleUserIds !== undefined) {
visibleUsers = await Promise.all(visibleUserIds.map(id => User.findOne({
if (ps.visibleUserIds !== undefined) {
visibleUsers = await Promise.all(ps.visibleUserIds.map(id => User.findOne({
_id: id
})));
}
......
import { Query } from 'cafy';
type Defs = {
params: {[key: string]: {
def: Query<any>;
default?: any;
}}
};
export default function <T extends Defs>(defs: T, params: any): [{
[P in keyof T['params']]: ReturnType<T['params'][P]['def']['get']>[0];
}, Error] {
const x: any = {};
let err: Error = null;
Object.keys(defs.params).some(k => {
const [v, e] = defs.params[k].def.get(params[k]);
if (e) {
err = e;
return true;
} else {
if (v === undefined && defs.params[k].default) {
x[k] = defs.params[k].default;
} else {
x[k] = v;
}
return false;
}
});
return [x, err];
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment