// initialize env.session_key, set cookie in env.response
let transaction = await env.site.database.Transaction()
- let session = await get_session(env, transaction)
+ try {
+ let root = await transaction.get({})
+ let session = await get_session(env, root)
- let pageview = await (
- await (
- await transaction.get({})
- ).get('pageviews', {})
- ).get(env.parsed_url.pathname, {})
- pageview.set('visits', (await pageview.get('visits') || 0) + 1)
+ let pageviews = await root.get('pageviews', {})
+ let pageview = await pageviews.get(env.parsed_url.pathname, {})
+ pageview.set('visits', (await pageview.get('visits') || 0) + 1)
- let session_pageviews = await session.get('pageviews', {})
- let i = await session_pageviews.get(env.parsed_url.pathname)
- if (i === undefined) {
- pageview.set(
- 'unique_visits',
- (await pageview.get('unique_visits') || 0) + 1
- )
- i = 0
- }
- session_pageviews.set(env.parsed_url.pathname, i + 1)
+ let session_pageviews = await session.get('pageviews', {})
+ let i = await session_pageviews.get(env.parsed_url.pathname)
+ if (i === undefined) {
+ pageview.set(
+ 'unique_visits',
+ (await pageview.get('unique_visits') || 0) + 1
+ )
+ i = 0
+ }
+ session_pageviews.set(env.parsed_url.pathname, i + 1)
- await transaction.commit()
+ await transaction.commit()
+ }
+ catch (error) {
+ transaction.rollback()
+ throw error
+ }
let _out = []
_out.push('<!doctype html>')