orm

package
v0.1.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 25, 2026 License: MIT Imports: 14 Imported by: 1

README

SQLite3 Connector für Go

Funktionen

  • Öffnen und Schließen einer SQLite3-Datenbank
  • Fehlerbehandlung und Ping-Test
  • Nutzt Go-Standardbibliothek database/sql und den Treiber github.com/mattn/go-sqlite3

Beispiel

import "github.com/a-digi/coco-orm"

func main() {
    connector, err := db.NewConnector("test.db")
    if err != nil {
        panic(err)
    }
    defer connector.Close()
    // connector.DB ist eine *sql.DB Instanz
}

Dynamic Queries and Pagination

The ORM offers advanced retrieval using reflection-based generic slicing and dynamic query building via the model.SelectQuery structure.

FindAllDynamic

A non-generic version of FindAll allowing dynamically created interface{} slices, heavily useful when your entity type isn't known at compile-time:

// create a dynamic slice pointer ptr to hold the objects
sliceType := reflect.SliceOf(entityType)
resultsPtr := reflect.New(sliceType)

err := db.FindAllDynamic(manager, resultsPtr.Interface())
FindByQuery

Uses a model.SelectQuery wrapper to automatically handle filtering, sorting, and pagination.

import "github.com/a-digi/coco-orm/orm/model"

query := model.SelectQuery{
    Entity: resultsPtr.Interface(), // Obligatory pointer to struct slice
    Pagination: model.Pagination{
        Page:  1,
        Limit: 10,
    },
    Filters: []model.Filter{
        {
            Column: "title",
            Value:  "Admin",
            Type:   model.FilterTypePartialMatch, // "LIKE %Admin%"
        },
    },
    Sorting: []model.Sorting{
        {
            Column:    "created_at",
            Direction: model.SortDirectionDesc,
        },
    },
}

err := db.FindByQuery(manager, query)

Documentation

Index

Constants

View Source
const (
	DefaultPage  = 1
	DefaultLimit = 10
)

Variables

This section is empty.

Functions

func CloseAllConnections

func CloseAllConnections() error

func FindAll added in v0.1.4

func FindAll[T any](manager *DatabaseManager, entities *[]T) error

func FindByEntity added in v0.1.4

func FindByEntity(manager *DatabaseManager, entities interface{}) error

func FindByQuery added in v0.1.4

func FindByQuery(manager *DatabaseManager, selectQuery model.SelectQuery) error

Types

type Connector

type Connector struct {
	DB *sql.DB
	// contains filtered or unexported fields
}

func NewConnector

func NewConnector(cfg DatabaseConfig) (*Connector, error)

func (*Connector) Close

func (c *Connector) Close() error

type DatabaseConfig

type DatabaseConfig struct {
	DbName        string
	DirectoryPath string
}

func NewDatabaseConfig

func NewDatabaseConfig(dbName, directoryPath string) DatabaseConfig

type DatabaseManager

type DatabaseManager struct {
	Connector        *Connector
	MigrationFolders []string
	Hydrator         *Hydrator
}

func NewDatabaseManager

func NewDatabaseManager(dbName string, dbDir string, migrationFolders []string) (*DatabaseManager, error)

func (*DatabaseManager) GenerateUuidV4

func (manager *DatabaseManager) GenerateUuidV4() string

func (*DatabaseManager) Insert

func (manager *DatabaseManager) Insert(query string, args ...interface{}) (sql.Result, error)

func (*DatabaseManager) QueryBuilder

func (manager *DatabaseManager) QueryBuilder() *query_builder.QueryBuilder

func (*DatabaseManager) SyncMigrations

func (manager *DatabaseManager) SyncMigrations() error

func (*DatabaseManager) TableExists

func (manager *DatabaseManager) TableExists(tableName string) (bool, error)

type Hydrator

type Hydrator struct{}

func (*Hydrator) Hydrate

func (h *Hydrator) Hydrate(rows *sql.Rows, elemType reflect.Type, columns []string) (reflect.Value, error)

func (*Hydrator) HydrateRows

func (h *Hydrator) HydrateRows(rows *sql.Rows, destSlicePtr interface{}) error

type Migration

type Migration struct {
	ID        string
	CreatedAt time.Time
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL