Set showAfter to 0 for immediately recurring requests (#26)

This commit is contained in:
Daniel J. Summers 2019-09-02 09:20:41 -05:00
parent 7e08d7375f
commit 0ea4249b65
6 changed files with 25 additions and 23 deletions

View File

@ -126,13 +126,6 @@ module Models =
recurCount : int16 recurCount : int16
} }
/// Reset the "showAfter" property on a request
[<CLIMutable>]
type Show =
{ /// The time after which the request should appear
showAfter : int64
}
/// The time until which a request should not appear in the journal /// The time until which a request should not appear in the journal
[<CLIMutable>] [<CLIMutable>]
type SnoozeUntil = type SnoozeUntil =
@ -175,7 +168,7 @@ module Request =
Id = RequestId.toString reqId Id = RequestId.toString reqId
userId = usrId userId = usrId
enteredOn = now enteredOn = now
showAfter = now showAfter = Ticks 0L
recurType = Recurrence.fromString r.recurType recurType = Recurrence.fromString r.recurType
recurCount = r.recurCount recurCount = r.recurCount
history = [ history = [
@ -211,7 +204,10 @@ module Request =
} sess } sess
match act with match act with
| Prayed -> | Prayed ->
let nextShow = (Ticks.toLong now) + (Recurrence.duration req.recurType * int64 req.recurCount) let nextShow =
match Recurrence.duration req.recurType with
| 0L -> 0L
| duration -> (Ticks.toLong now) + (duration * int64 req.recurCount)
Data.updateShowAfter reqId (Ticks nextShow) sess Data.updateShowAfter reqId (Ticks nextShow) sess
| _ -> () | _ -> ()
do! Data.saveChanges sess do! Data.saveChanges sess
@ -292,8 +288,7 @@ module Request =
let reqId = toReqId requestId let reqId = toReqId requestId
match! Data.tryRequestById reqId usrId sess with match! Data.tryRequestById reqId usrId sess with
| Some _ -> | Some _ ->
let! show = ctx.BindJsonAsync<Models.Show> () Data.updateShowAfter reqId (Ticks 0L) sess
Data.updateShowAfter reqId (Ticks show.showAfter) sess
do! Data.saveChanges sess do! Data.saveChanges sess
return! setStatusCode 204 next ctx return! setStatusCode 204 next ctx
| None -> return! Error.notFound next ctx | None -> return! Error.notFound next ctx
@ -327,7 +322,9 @@ module Request =
match! Data.tryRequestById reqId usrId sess with match! Data.tryRequestById reqId usrId sess with
| Some _ -> | Some _ ->
let! recur = ctx.BindJsonAsync<Models.Recurrence> () let! recur = ctx.BindJsonAsync<Models.Recurrence> ()
Data.updateRecurrence reqId (Recurrence.fromString recur.recurType) recur.recurCount sess let recurrence = Recurrence.fromString recur.recurType
Data.updateRecurrence reqId recurrence recur.recurCount sess
match recurrence with Immediate -> Data.updateShowAfter reqId (Ticks 0L) sess | _ -> ()
do! Data.saveChanges sess do! Data.saveChanges sess
return! setStatusCode 204 next ctx return! setStatusCode 204 next ctx
| None -> return! Error.notFound next ctx | None -> return! Error.notFound next ctx

View File

@ -52,7 +52,7 @@ export default {
this.$auth.logout(this.$store, this.$router) this.$auth.logout(this.$store, this.$router)
}, },
showHelp () { showHelp () {
window.open('https://docs.prayerjournal.me','_blank') window.open('https://docs.prayerjournal.me', '_blank')
} }
} }
} }

View File

@ -76,7 +76,7 @@ export default {
await this.$store.dispatch(actions.SHOW_REQUEST_NOW, { await this.$store.dispatch(actions.SHOW_REQUEST_NOW, {
progress: this.progress, progress: this.progress,
requestId: this.request.requestId, requestId: this.request.requestId,
showAfter: Date.now() showAfter: 0
}) })
this.messages.$emit('info', 'Recurrence skipped; request now shows in journal') this.messages.$emit('info', 'Recurrence skipped; request now shows in journal')
this.$parent.$emit('requestNowShown') this.$parent.$emit('requestNowShown')

View File

@ -1,6 +1,6 @@
'use strict' 'use strict'
/* eslint-disable */ /* eslint-disable no-multi-spaces */
import Vue from 'vue' import Vue from 'vue'
import Vuex from 'vuex' import Vuex from 'vuex'
@ -9,10 +9,11 @@ import auth from '@/auth/AuthService'
import mutations from './mutation-types' import mutations from './mutation-types'
import actions from './action-types' import actions from './action-types'
/* eslint-enable */ /* eslint-enable no-multi-spaces */
Vue.use(Vuex) Vue.use(Vuex)
/* eslint-disable no-console */
const logError = function (error) { const logError = function (error) {
if (error.response) { if (error.response) {
// The request was made and the server responded with a status code // The request was made and the server responded with a status code
@ -39,7 +40,7 @@ const setBearer = async function () {
try { try {
await auth.getAccessToken() await auth.getAccessToken()
api.setBearer(auth.session.id.token) api.setBearer(auth.session.id.token)
} catch(err) { } catch (err) {
if (err === 'Not logged in') { if (err === 'Not logged in') {
console.warn('API request attempted when user was not logged in') console.warn('API request attempted when user was not logged in')
} else { } else {
@ -47,6 +48,7 @@ const setBearer = async function () {
} }
} }
} }
/* eslint-enable no-console */
export default new Vuex.Store({ export default new Vuex.Store({
state: { state: {
@ -100,7 +102,7 @@ export default new Vuex.Store({
try { try {
await auth.getAccessToken() await auth.getAccessToken()
commit(mutations.SET_AUTHENTICATION, auth.isAuthenticated()) commit(mutations.SET_AUTHENTICATION, auth.isAuthenticated())
} catch(_) { } catch (_) {
commit(mutations.SET_AUTHENTICATION, false) commit(mutations.SET_AUTHENTICATION, false)
} }
}, },

View File

@ -65,20 +65,23 @@ let migrateRequests (store : IDocumentStore) =
"""SELECT "requestId", "enteredOn", "userId", "snoozedUntil", "showAfter", "recurType", "recurCount" FROM mpj.request""" """SELECT "requestId", "enteredOn", "userId", "snoozedUntil", "showAfter", "recurType", "recurCount" FROM mpj.request"""
use rdr = cmd.ExecuteReader () use rdr = cmd.ExecuteReader ()
while rdr.Read () do while rdr.Read () do
let reqId = rdr.getString "requestId" let reqId = rdr.getString "requestId"
let recurrence = (rdr.getString >> Recurrence.fromString) "recurType"
sess.Store ( sess.Store (
{ Id = (RequestId.fromIdString >> RequestId.toString) reqId { Id = (RequestId.fromIdString >> RequestId.toString) reqId
enteredOn = rdr.getTicks "enteredOn" enteredOn = rdr.getTicks "enteredOn"
userId = (rdr.getString >> UserId) "userId" userId = (rdr.getString >> UserId) "userId"
snoozedUntil = rdr.getTicks "snoozedUntil" snoozedUntil = rdr.getTicks "snoozedUntil"
showAfter = rdr.getTicks "showAfter" showAfter = match recurrence with Immediate -> Ticks 0L | _ -> rdr.getTicks "showAfter"
recurType = (rdr.getString >> Recurrence.fromString) "recurType" recurType = recurrence
recurCount = rdr.getShort "recurCount" recurCount = rdr.getShort "recurCount"
history = getHistory reqId history = getHistory reqId
notes = getNotes reqId notes = getNotes reqId
}) })
sess.SaveChanges () sess.SaveChanges ()
open Converters
[<EntryPoint>] [<EntryPoint>]
let main argv = let main argv =
let raven = new DocumentStore (Urls = [| "http://localhost:8080" |], Database = "myPrayerJournal") let raven = new DocumentStore (Urls = [| "http://localhost:8080" |], Database = "myPrayerJournal")

View File

@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework> <TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
@ -10,7 +10,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="FSharp.Core" Version="4.6.2" /> <PackageReference Include="FSharp.Core" Version="4.7.0" />
<PackageReference Include="Microsoft.FSharpLu.Json" Version="0.11.2" /> <PackageReference Include="Microsoft.FSharpLu.Json" Version="0.11.2" />
<PackageReference Include="Npgsql" Version="4.0.8" /> <PackageReference Include="Npgsql" Version="4.0.8" />
<PackageReference Include="RavenDb.Client" Version="4.2.2" /> <PackageReference Include="RavenDb.Client" Version="4.2.2" />