don't persist that setting; reset to default on every deploy

pull/3955/head
Thibault Duplessis 2018-01-03 22:59:19 -05:00
parent 2943ccc694
commit d700484e74
2 changed files with 10 additions and 7 deletions

View File

@ -121,7 +121,8 @@ final class Env(
val websocketDropPercentSetting = settingStore[Int](
"websocketDropPercent",
default = 100,
text = "Percentage of websockets to drop. Experimenting server restart issues. Don't touch it.".some
text = "Percentage of websockets to drop. Experimenting server restart issues. Don't touch it.".some,
persist = false
)
val requestDropper = new RequestDropper(

View File

@ -7,7 +7,8 @@ final class SettingStore[A: BSONValueHandler: SettingStore.StringReader] private
coll: Coll,
val id: String,
val default: A,
val text: Option[String]
val text: Option[String],
persist: Boolean
) {
import SettingStore.dbField
@ -18,18 +19,18 @@ final class SettingStore[A: BSONValueHandler: SettingStore.StringReader] private
def set(v: A): Funit = {
value = v
coll.update(dbId, $set(dbField -> v), upsert = true).void
persist ?? coll.update(dbId, $set(dbField -> v), upsert = true).void
}
def form: Option[Form[_]] = SettingStore formOf this
def setString(str: String): Funit = (implicitly[SettingStore.StringReader[A]] read str) ?? set
override def toString = s"SettingStore(id: $id, default: $default, value: $value)"
override def toString = s"SettingStore(id: $id, default: $default, value: $value, persist: $persist)"
private val dbId = $id(id)
coll.primitiveOne[A](dbId, dbField) map2 { (v: A) =>
persist ?? coll.primitiveOne[A](dbId, dbField) map2 { (v: A) =>
value = v
}
}
@ -40,8 +41,9 @@ object SettingStore {
def apply[A: BSONValueHandler: StringReader](
id: String,
default: A,
text: Option[String] = None
) = new SettingStore[A](coll, id, default, text)
text: Option[String] = None,
persist: Boolean = true
) = new SettingStore[A](coll, id, default, text, persist = persist)
}
private final class StringReader[A](val read: String => Option[A])