2019-07-18 18:55:39 +02:00
package moe.kageru.kagebot.persistence
import org.mapdb.DBMaker
import org.mapdb.Serializer
object Dao {
2019-11-06 07:39:22 +01:00
private val db = DBMaker . fileDB ( " kagebot.db " ) . fileMmapEnable ( ) . transactionEnable ( ) . make ( )
2019-07-23 21:50:55 +02:00
private val prisoners = db . hashMap ( " timeout " , Serializer . LONG , Serializer . LONG _ARRAY ) . createOrOpen ( )
2019-08-03 09:03:20 +02:00
private val commands = db . hashMap ( " commands " , Serializer . STRING , Serializer . INTEGER ) . createOrOpen ( )
2019-10-19 11:32:28 +02:00
private val tempVcs = db . hashSet ( " vcs " , Serializer . STRING ) . createOrOpen ( )
2019-07-18 18:55:39 +02:00
2019-07-23 21:50:55 +02:00
fun saveTimeout ( releaseTime : Long , roles : List < Long > ) {
prisoners [ releaseTime ] = roles . toLongArray ( )
2019-07-18 18:55:39 +02:00
}
2019-08-03 09:03:20 +02:00
fun setCommandCounter ( count : Int ) {
commands [ " total " ] = count
}
fun getCommandCounter ( ) = commands [ " total " ] ?: 0
2019-07-23 23:31:23 +02:00
fun close ( ) = db . close ( )
2019-07-23 21:50:55 +02:00
fun getAllTimeouts ( ) = prisoners . keys
fun deleteTimeout ( releaseTime : Long ) : LongArray {
val timeout = prisoners [ releaseTime ] !!
prisoners . remove ( releaseTime )
return timeout
2019-07-18 18:55:39 +02:00
}
2019-10-19 11:32:28 +02:00
fun isTemporaryVC ( channel : String ) : Boolean {
return channel in tempVcs
}
fun addTemporaryVC ( channel : String ) {
tempVcs . add ( channel )
}
fun removeTemporaryVC ( channel : String ) {
tempVcs . remove ( channel )
}
2019-07-25 20:18:10 +02:00
}