type Mutation { login(user: LoginInfo): Boolean register(user: LoginInfo): Int } ` );
const fakeDatabase = {};
class User { constructor(id, name, passwd) { this.id = id; this.name = name; } }
const root = { getUser: ({ id }) => { let user = fakeDatabase[id]; if (!user) { throw new Error("404"); }
return new User(user.id, user.name); }, login: ({ loginInfo }) => { if (!loginInfo.captcha) throw new Error("captcha error"); if (!loginInfo.name || !loginInfo.passwd) throw new Error("params error");
for (let o in fakeDatabase) { if (o.name === loginInfo.name && o.passwd === loginInfo.passwd) return true; }
return false; }, register: ({ loginInfo }) => { if (!loginInfo.captcha) throw new Error("captcha error"); if (!loginInfo.name || !loginInfo.passwd) throw new Error("params error");
for (let o in fakeDatabase) { if (o.name === loginInfo.name) { throw new Error("name repeat"); } }
//build id var id = require("crypto").randomBytes(10).toString("hex"); fakeDatabase({ id, name: loginInfo.name, passwd: loginInfo.passwd, });