Files
linkshare/cmd/linkctl/db.go
omicron f7c72626ee Use cobra to turn linkctl into a proper cli
Most commands are currently placeholders but version and db init work
2025-05-09 03:37:52 +02:00

49 lines
1.1 KiB
Go

package main
import (
"fmt"
"git.omicron.one/omicron/linkshare/internal/database"
"git.omicron.one/omicron/linkshare/internal/util"
"git.omicron.one/omicron/linkshare/internal/version"
"github.com/spf13/cobra"
)
func openDB() (*database.DB, error) {
paths, err := util.FindDirectories(dbPath)
if err != nil {
return nil, err
}
return database.Open(paths.DatabaseFile)
}
func dbPreRun(cmd *cobra.Command, args []string) error {
return setupDb()
}
func dbPostRun(cmd *cobra.Command, args []string) error {
return cleanupDb()
}
func dbInitHandler(cmd *cobra.Command, args []string) {
err := db.Initialize(paths.SchemaDir)
if err == database.ErrAlreadyInitialized {
fmt.Printf("Database %q is already initialized\n", dbPath)
return
}
if err == nil {
fmt.Printf("Initialized database %q with schema version %d\n", dbPath, version.SchemaVersion)
return
}
fmt.Printf("Failed to initialize database %q: %v\n", dbPath, err)
}
func dbBackupHandler(cmd *cobra.Command, args []string) {
fmt.Println("Not implemented")
}
func dbUpdateHandler(cmd *cobra.Command, args []string) {
fmt.Println("Not implemented")
}