mirror of
https://github.com/tulir/gomuks.git
synced 2025-04-20 10:33:41 -05:00
93 lines
2.9 KiB
Go
93 lines
2.9 KiB
Go
// Copyright (c) 2024 Tulir Asokan
|
|
//
|
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
package database
|
|
|
|
import (
|
|
_ "github.com/mattn/go-sqlite3"
|
|
"go.mau.fi/util/dbutil"
|
|
_ "go.mau.fi/util/dbutil/litestream"
|
|
|
|
"go.mau.fi/gomuks/pkg/hicli/database/upgrades"
|
|
)
|
|
|
|
type Database struct {
|
|
*dbutil.Database
|
|
|
|
Account *AccountQuery
|
|
AccountData *AccountDataQuery
|
|
Room *RoomQuery
|
|
InvitedRoom *InvitedRoomQuery
|
|
Event *EventQuery
|
|
CurrentState *CurrentStateQuery
|
|
Timeline *TimelineQuery
|
|
SessionRequest *SessionRequestQuery
|
|
Receipt *ReceiptQuery
|
|
Media *MediaQuery
|
|
SpaceEdge *SpaceEdgeQuery
|
|
PushRegistration *PushRegistrationQuery
|
|
}
|
|
|
|
func New(rawDB *dbutil.Database) *Database {
|
|
rawDB.UpgradeTable = upgrades.Table
|
|
eventQH := dbutil.MakeQueryHelper(rawDB, newEvent)
|
|
return &Database{
|
|
Database: rawDB,
|
|
|
|
Account: &AccountQuery{QueryHelper: dbutil.MakeQueryHelper(rawDB, newAccount)},
|
|
AccountData: &AccountDataQuery{QueryHelper: dbutil.MakeQueryHelper(rawDB, newAccountData)},
|
|
Room: &RoomQuery{QueryHelper: dbutil.MakeQueryHelper(rawDB, newRoom)},
|
|
InvitedRoom: &InvitedRoomQuery{QueryHelper: dbutil.MakeQueryHelper(rawDB, newInvitedRoom)},
|
|
Event: &EventQuery{QueryHelper: eventQH},
|
|
CurrentState: &CurrentStateQuery{QueryHelper: eventQH},
|
|
Timeline: &TimelineQuery{QueryHelper: eventQH},
|
|
SessionRequest: &SessionRequestQuery{QueryHelper: dbutil.MakeQueryHelper(rawDB, newSessionRequest)},
|
|
Receipt: &ReceiptQuery{QueryHelper: dbutil.MakeQueryHelper(rawDB, newReceipt)},
|
|
Media: &MediaQuery{QueryHelper: dbutil.MakeQueryHelper(rawDB, newMedia)},
|
|
SpaceEdge: &SpaceEdgeQuery{QueryHelper: dbutil.MakeQueryHelper(rawDB, newSpaceEdge)},
|
|
PushRegistration: &PushRegistrationQuery{QueryHelper: dbutil.MakeQueryHelper(rawDB, newPushRegistration)},
|
|
}
|
|
}
|
|
|
|
func newSessionRequest(_ *dbutil.QueryHelper[*SessionRequest]) *SessionRequest {
|
|
return &SessionRequest{}
|
|
}
|
|
|
|
func newEvent(_ *dbutil.QueryHelper[*Event]) *Event {
|
|
return &Event{}
|
|
}
|
|
|
|
func newRoom(_ *dbutil.QueryHelper[*Room]) *Room {
|
|
return &Room{}
|
|
}
|
|
|
|
func newInvitedRoom(_ *dbutil.QueryHelper[*InvitedRoom]) *InvitedRoom {
|
|
return &InvitedRoom{}
|
|
}
|
|
|
|
func newReceipt(_ *dbutil.QueryHelper[*Receipt]) *Receipt {
|
|
return &Receipt{}
|
|
}
|
|
|
|
func newMedia(_ *dbutil.QueryHelper[*Media]) *Media {
|
|
return &Media{}
|
|
}
|
|
|
|
func newAccountData(_ *dbutil.QueryHelper[*AccountData]) *AccountData {
|
|
return &AccountData{}
|
|
}
|
|
|
|
func newAccount(_ *dbutil.QueryHelper[*Account]) *Account {
|
|
return &Account{}
|
|
}
|
|
|
|
func newSpaceEdge(_ *dbutil.QueryHelper[*SpaceEdge]) *SpaceEdge {
|
|
return &SpaceEdge{}
|
|
}
|
|
|
|
func newPushRegistration(_ *dbutil.QueryHelper[*PushRegistration]) *PushRegistration {
|
|
return &PushRegistration{}
|
|
}
|