* First pass at centralized database reference. Closes #282 * Add verbose logging option to launch.json * Clear current broadcaster on stream end. Closes #285 * Fix typo in verbose launch args * Add support for purging tailwind styles. For #224 * Don't need to pass db as param since it is stored * Commit updated Javascript packages Co-authored-by: Owncast <owncast@owncast.online>
This commit is contained in:
parent
6d0aa4bdd1
commit
19e86b8c04
1
.gitignore
vendored
1
.gitignore
vendored
@ -30,3 +30,4 @@ chat.db
|
||||
.yp.key
|
||||
|
||||
!webroot/js/web_modules/**/dist
|
||||
!core/data
|
||||
|
@ -14,7 +14,7 @@ var Config *config
|
||||
var _default config
|
||||
|
||||
type config struct {
|
||||
ChatDatabaseFilePath string `yaml:"chatDatabaseFile"`
|
||||
DatabaseFilePath string `yaml:"databaseFile"`
|
||||
EnableDebugFeatures bool `yaml:"-"`
|
||||
FFMpegPath string `yaml:"ffmpegPath"`
|
||||
Files files `yaml:"files"`
|
||||
@ -193,6 +193,14 @@ func (c *config) GetYPServiceHost() string {
|
||||
return _default.YP.YPServiceURL
|
||||
}
|
||||
|
||||
func (c *config) GetDataFilePath() string {
|
||||
if c.DatabaseFilePath != "" {
|
||||
return c.DatabaseFilePath
|
||||
}
|
||||
|
||||
return _default.DatabaseFilePath
|
||||
}
|
||||
|
||||
func (c *config) GetVideoStreamQualities() []StreamQuality {
|
||||
if len(c.VideoSettings.StreamQualities) > 0 {
|
||||
return c.VideoSettings.StreamQualities
|
||||
|
@ -15,6 +15,7 @@ func getDefaults() config {
|
||||
defaults.Files.MaxNumberInPlaylist = 5
|
||||
defaults.YP.Enabled = false
|
||||
defaults.YP.YPServiceURL = "https://yp.owncast.online"
|
||||
defaults.DatabaseFilePath = "data/owncast.db"
|
||||
|
||||
defaultQuality := StreamQuality{
|
||||
IsAudioPassthrough: true,
|
||||
|
@ -2,36 +2,22 @@ package chat
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
"github.com/owncast/owncast/config"
|
||||
"github.com/owncast/owncast/core/data"
|
||||
"github.com/owncast/owncast/models"
|
||||
"github.com/owncast/owncast/utils"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
var _db *sql.DB
|
||||
|
||||
func setupPersistence() {
|
||||
file := config.Config.ChatDatabaseFilePath
|
||||
// Create empty DB file if it doesn't exist.
|
||||
if !utils.DoesFileExists(file) {
|
||||
log.Traceln("Creating new chat history database at", file)
|
||||
|
||||
_, err := os.Create(file)
|
||||
if err != nil {
|
||||
log.Fatal(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
sqliteDatabase, _ := sql.Open("sqlite3", file)
|
||||
_db = sqliteDatabase
|
||||
createTable(sqliteDatabase)
|
||||
_db = data.GetDatabase()
|
||||
createTable()
|
||||
}
|
||||
|
||||
func createTable(db *sql.DB) {
|
||||
func createTable() {
|
||||
createTableSQL := `CREATE TABLE IF NOT EXISTS messages (
|
||||
"id" string NOT NULL PRIMARY KEY,
|
||||
"author" TEXT,
|
||||
|
37
core/data/data.go
Normal file
37
core/data/data.go
Normal file
@ -0,0 +1,37 @@
|
||||
// This is a centralized place to connect to the database, and hold a reference to it.
|
||||
// Other packages can share this reference. This package would also be a place to add any kind of
|
||||
// persistence-related convenience methods or migrations.
|
||||
|
||||
package data
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"os"
|
||||
|
||||
"github.com/owncast/owncast/config"
|
||||
"github.com/owncast/owncast/utils"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
var _db *sql.DB
|
||||
|
||||
func GetDatabase() *sql.DB {
|
||||
return _db
|
||||
}
|
||||
|
||||
func SetupPersistence() {
|
||||
file := config.Config.DatabaseFilePath
|
||||
|
||||
// Create empty DB file if it doesn't exist.
|
||||
if !utils.DoesFileExists(file) {
|
||||
log.Traceln("Creating new database at", file)
|
||||
|
||||
_, err := os.Create(file)
|
||||
if err != nil {
|
||||
log.Fatal(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
sqliteDatabase, _ := sql.Open("sqlite3", file)
|
||||
_db = sqliteDatabase
|
||||
}
|
13
main.go
13
main.go
@ -9,6 +9,7 @@ import (
|
||||
|
||||
"github.com/owncast/owncast/config"
|
||||
"github.com/owncast/owncast/core"
|
||||
"github.com/owncast/owncast/core/data"
|
||||
"github.com/owncast/owncast/metrics"
|
||||
"github.com/owncast/owncast/router"
|
||||
)
|
||||
@ -29,7 +30,7 @@ func main() {
|
||||
log.Infoln(getVersion())
|
||||
|
||||
configFile := flag.String("configFile", "config.yaml", "Config File full path. Defaults to current folder")
|
||||
chatDbFile := flag.String("chatDatabase", "", "Path to the chat database file.")
|
||||
dbFile := flag.String("database", "", "Path to the database file.")
|
||||
enableDebugOptions := flag.Bool("enableDebugFeatures", false, "Enable additional debugging options.")
|
||||
enableVerboseLogging := flag.Bool("enableVerboseLogging", false, "Enable additional logging.")
|
||||
|
||||
@ -50,14 +51,16 @@ func main() {
|
||||
}
|
||||
config.Config.EnableDebugFeatures = *enableDebugOptions
|
||||
|
||||
if *chatDbFile != "" {
|
||||
config.Config.ChatDatabaseFilePath = *chatDbFile
|
||||
} else if config.Config.ChatDatabaseFilePath == "" {
|
||||
config.Config.ChatDatabaseFilePath = "chat.db"
|
||||
if *dbFile != "" {
|
||||
config.Config.DatabaseFilePath = *dbFile
|
||||
} else if config.Config.DatabaseFilePath == "" {
|
||||
config.Config.DatabaseFilePath = config.Config.GetDataFilePath()
|
||||
}
|
||||
|
||||
go metrics.Start()
|
||||
|
||||
data.SetupPersistence()
|
||||
|
||||
// starts the core
|
||||
if err := core.Start(); err != nil {
|
||||
log.Error("failed to start the core package")
|
||||
|
Loading…
Reference in New Issue
Block a user