Files
mantra-kmp/composeApp/src/commonMain/kotlin/ac/aux/compose/database/AuxDatabase.kt
2026-04-18 21:58:32 +02:00

89 lines
3.2 KiB
Kotlin

package ac.aux.compose.database
import ac.aux.compose.database.converters.AuxConverters
import ac.aux.compose.database.dao.BroadcastNostrEventReceiptDao
import ac.aux.compose.database.dao.BroadcastNostrEventRequestDao
import ac.aux.compose.database.dao.NostrDao
import ac.aux.compose.database.dao.NostrEventDao
import ac.aux.compose.database.dao.PostDao
import ac.aux.compose.database.dao.ProfileDao
import ac.aux.compose.database.dao.ReactionDao
import ac.aux.compose.database.dao.RecentSearchDao
import ac.aux.compose.database.dao.RelayDao
import ac.aux.compose.database.dao.RepostDao
import ac.aux.compose.database.dao.SynchronizeNostrEventRequestDao
import ac.aux.compose.database.dao.SynchronizeNostrEventResultDao
import ac.aux.compose.database.dao.UnsignedNostrEventDao
import ac.aux.compose.database.dao.ZapDao
import ac.aux.compose.database.model.BroadcastNostrEventReceipt
import ac.aux.compose.database.model.BroadcastNostrEventRequest
import ac.aux.compose.database.model.NostrEvent
import ac.aux.compose.database.model.Post
import ac.aux.compose.database.model.Profile
import ac.aux.compose.database.model.Reaction
import ac.aux.compose.database.model.RecentSearch
import ac.aux.compose.database.model.Relay
import ac.aux.compose.database.model.Repost
import ac.aux.compose.database.model.SynchronizeNostrEventRequest
import ac.aux.compose.database.model.SynchronizeNostrEventResult
import ac.aux.compose.database.model.UnsignedNostrEvent
import ac.aux.compose.database.model.Zap
import androidx.room.Database
import androidx.room.RoomDatabase
import androidx.room.TypeConverters
import androidx.room.immediateTransaction
import androidx.room.useWriterConnection
import kotlin.time.Instant
val GENESIS_AT = Instant.fromEpochMilliseconds(1231006505000L)
@Database(
entities = [
BroadcastNostrEventReceipt::class,
BroadcastNostrEventRequest::class,
NostrEvent::class,
Post::class,
Profile::class,
Reaction::class,
RecentSearch::class,
Relay::class,
Repost::class,
SynchronizeNostrEventRequest::class,
SynchronizeNostrEventResult::class,
UnsignedNostrEvent::class,
Zap::class
],
version = 1
)
@TypeConverters(AuxConverters::class)
abstract class AuxDatabase: RoomDatabase() {
abstract fun broadcastNostrEventReceiptDao(): BroadcastNostrEventReceiptDao
abstract fun broadcastNostrEventRequestDao(): BroadcastNostrEventRequestDao
abstract fun nostrDao(): NostrDao
abstract fun nostrEventDao(): NostrEventDao
abstract fun postDao(): PostDao
abstract fun profileDao(): ProfileDao
abstract fun reactionDao(): ReactionDao
abstract fun recentSearchDao(): RecentSearchDao
abstract fun relayDao(): RelayDao
abstract fun repostDao(): RepostDao
abstract fun synchronizeNostrEventRequestDao(): SynchronizeNostrEventRequestDao
abstract fun synchronizeNostrEventResultDao(): SynchronizeNostrEventResultDao
abstract fun unsignedNostrEventDao(): UnsignedNostrEventDao
abstract fun zapDao(): ZapDao
suspend fun wipeData() {
useWriterConnection { transactor ->
transactor.immediateTransaction {
// TODO: Actually delete the data...
}
}
}
}