2017-11-05 11:46:50 +08:00
"use strict" ;
const express = require ( 'express' ) ;
const router = express . Router ( ) ;
const sql = require ( '../../services/sql' ) ;
const auth = require ( '../../services/auth' ) ;
const utils = require ( '../../services/utils' ) ;
2017-11-17 10:50:00 +08:00
const sync _table = require ( '../../services/sync_table' ) ;
2017-11-19 06:05:50 +08:00
const options = require ( '../../services/options' ) ;
2017-11-05 11:46:50 +08:00
router . get ( '' , auth . checkApiAuth , async ( req , res , next ) => {
res . send ( await getRecentNotes ( ) ) ;
} ) ;
2017-11-20 01:06:48 +08:00
router . put ( '/:notePath' , auth . checkApiAuth , async ( req , res , next ) => {
const notePath = req . params . notePath ;
2017-11-19 06:05:50 +08:00
2017-11-29 06:04:47 +08:00
await sql . doInTransaction ( async db => {
await sql . replace ( db , 'recent_notes' , {
2017-11-24 13:09:53 +08:00
note _path : notePath ,
date _accessed : utils . nowTimestamp ( ) ,
is _deleted : 0
} ) ;
2017-11-05 11:46:50 +08:00
2017-11-29 06:04:47 +08:00
await sync _table . addRecentNoteSync ( db , notePath ) ;
2017-11-19 06:05:50 +08:00
2017-11-29 06:04:47 +08:00
await options . setOption ( db , 'start_note_tree_id' , notePath ) ;
2017-11-24 13:09:53 +08:00
} ) ;
2017-11-05 12:16:02 +08:00
2017-11-05 11:46:50 +08:00
res . send ( await getRecentNotes ( ) ) ;
} ) ;
2017-11-20 01:06:48 +08:00
router . delete ( '/:notePath' , auth . checkApiAuth , async ( req , res , next ) => {
2017-11-24 13:09:53 +08:00
const notePath = req . params . notePath ;
2017-11-05 12:16:02 +08:00
2017-11-29 06:04:47 +08:00
await sql . doInTransaction ( async db => {
await sql . execute ( db , 'UPDATE recent_notes SET is_deleted = 1 WHERE note_path = ?' , [ notePath ] ) ;
2017-11-24 13:09:53 +08:00
2017-11-29 06:04:47 +08:00
await sync _table . addRecentNoteSync ( db , notePath ) ;
2017-11-24 13:09:53 +08:00
} ) ;
2017-11-05 11:46:50 +08:00
res . send ( await getRecentNotes ( ) ) ;
} ) ;
async function getRecentNotes ( ) {
await deleteOld ( ) ;
2017-11-05 12:16:02 +08:00
return await sql . getResults ( "SELECT * FROM recent_notes WHERE is_deleted = 0 ORDER BY date_accessed DESC" ) ;
2017-11-05 11:46:50 +08:00
}
async function deleteOld ( ) {
2017-11-05 12:16:02 +08:00
const cutoffDateAccessed = await sql . getSingleValue ( "SELECT date_accessed FROM recent_notes WHERE is_deleted = 0 ORDER BY date_accessed DESC LIMIT 100, 1" ) ;
2017-11-05 11:46:50 +08:00
if ( cutoffDateAccessed ) {
2017-11-29 06:04:47 +08:00
await sql . doInTransaction ( async db => {
await sql . execute ( db , "DELETE FROM recent_notes WHERE date_accessed < ?" , [ cutoffDateAccessed ] ) ;
} ) ;
2017-11-05 11:46:50 +08:00
}
}
module . exports = router ;