package main import ( "database/sql" "fmt" "path/filepath" _ "github.com/mattn/go-sqlite3" "golang.org/x/crypto/bcrypt" "pdf-wizard/internal/db" "pdf-wizard/internal/models" ) func openDB(dbPath string) (*sql.DB, error) { if !filepath.IsAbs(dbPath) { abs, err := filepath.Abs(dbPath) if err == nil { dbPath = abs } } return db.InitDB(dbPath) } func getOrgs(conn *sql.DB) ([]models.Org, error) { return db.ListOrgs(conn) } func getOrgByName(conn *sql.DB, name string) (*models.Org, error) { return db.GetOrgByName(conn, name) } func createOrg(conn *sql.DB, name string) (*models.Org, error) { return db.CreateOrg(conn, name) } func deleteOrg(conn *sql.DB, id int) error { return db.DeleteOrg(conn, id) } func getOrgDomains(conn *sql.DB, orgID int) ([]models.OrgDomain, error) { return db.GetOrgDomains(conn, orgID) } func addOrgDomain(conn *sql.DB, orgID int, domain string) (*models.OrgDomain, error) { return db.AddOrgDomain(conn, orgID, domain) } func deleteOrgDomain(conn *sql.DB, orgID int, domain string) error { return db.DeleteOrgDomain(conn, orgID, domain) } func createUser(conn *sql.DB, username, password string) (*models.User, error) { hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) if err != nil { return nil, fmt.Errorf("hashing password: %w", err) } return db.CreateUser(conn, username, string(hash)) } func getUserByName(conn *sql.DB, username string) (*models.User, error) { return db.GetUserByUsername(conn, username) } func getUsers(conn *sql.DB) ([]models.User, error) { return db.ListUsers(conn) } func deleteUser(conn *sql.DB, id int) error { return db.DeleteUser(conn, id) } func getUserOrgs(conn *sql.DB, userID int) ([]models.Org, error) { return db.GetUserOrgs(conn, userID) } func assignUserToOrg(conn *sql.DB, userID, orgID int) error { return db.AssignUserToOrg(conn, userID, orgID) } func removeUserFromOrg(conn *sql.DB, userID, orgID int) error { return db.RemoveUserFromOrg(conn, userID, orgID) }