// Copyright (c) 2024 mStar // // Licensed under the EUPL, Version 1.2 // // You may not use this work except in compliance with the Licence. // You should have received a copy of the Licence along with this work. If not, see: // . // See the Licence for the specific language governing permissions and limitations under the Licence. // package storage import ( "fmt" "gitlab.com/mstarongitlab/linstrom/config" "gorm.io/driver/postgres" "gorm.io/gorm" ) type Storage struct { Db *gorm.DB } func NewDb(cfg *config.Config) (*gorm.DB, error) { db, err := gorm.Open(postgres.Open(cfg.General.DbPath)) if err != nil { return nil, fmt.Errorf("failed to connect to db %s: %w", cfg.General.DbPath, err) } err = db.AutoMigrate( &Person{}, &Note{ Tags: make([]string, 0), DeliverTo: make([]string, 0), }, &Follow{}, ) if err != nil { return nil, fmt.Errorf("failed to apply migrations: %w", err) } return db, nil } func NewStorage(cfg *config.Config) (*Storage, error) { db, err := NewDb(cfg) if err != nil { return nil, fmt.Errorf("failed to create database connection while creating storage: %w", err) } return &Storage{ Db: db, }, nil }