b3058b3347b1c4d783bf870d2a4d131ad5628dc8
[ndcode_site.git] / api / account / change_details / get_draft.json.jst
1 let XDate = require('xdate')
2
3 return async env => {
4   let post_request = await _require('/_lib/post_request.jst')
5   let session_cookie = await _require('/_lib/session_cookie.jst')
6   let Problem = await _require('/_lib/Problem.jst')
7
8   await post_request(
9     // env
10     env,
11     // handler
12     async () => {
13       let transaction = await env.site.database.Transaction()
14       try {
15         // initialize env.session_key, set cookie in env.response
16         let session = await session_cookie(env, transaction)
17
18         let change_details_draft = await session.get('change_details_draft')
19         let details =
20           change_details_draft !== undefined &&
21             XDate.now() < await change_details_draft.get_json('expires') ?
22             {
23               given_names: await change_details_draft.get_json('given_names'),
24               family_name: await change_details_draft.get_json('family_name'),
25               contact_me: await change_details_draft.get_json('contact_me')
26             } :
27             null
28
29         await transaction.commit()
30         return details
31       }
32       catch (error) {
33         transaction.rollback()
34         throw error
35       }
36     }
37   )
38 }