Database

Functions

Grouped function reference for extension APIs and major database utilities

How to Read This Page

The package exports many functions and methods. This page groups the APIs you usually call in real app code, while keeping symbol names explicit for quick lookup.

Extension and Config APIs

Extension Construction and Lifecycle

  • NewExtension(opts ...ConfigOption) forge.Extension
  • NewExtensionWithConfig(config Config) forge.Extension
  • (*Extension).Register(app forge.App) error
  • (*Extension).Start(ctx context.Context) error
  • (*Extension).Stop(ctx context.Context) error
  • (*Extension).Health(ctx context.Context) error

Config Helpers

  • DefaultConfig() Config
  • (*Config).Validate() error
  • WithDatabases(databases ...DatabaseConfig) ConfigOption
  • WithDatabase(db DatabaseConfig) ConfigOption
  • WithDefault(name string) ConfigOption
  • WithRequireConfig(require bool) ConfigOption
  • WithConfig(config Config) ConfigOption
  • MaskDSN(dsn string, dbType DatabaseType) string

Manager and Database Access APIs

Manager

  • NewDatabaseManager(logger forge.Logger, metrics forge.Metrics) *DatabaseManager
  • (*DatabaseManager).Register(name string, db Database) error
  • (*DatabaseManager).RegisterAndOpen(ctx context.Context, name string, db Database) error
  • (*DatabaseManager).Get(name string) (Database, error)
  • (*DatabaseManager).SetDefault(name string) error
  • (*DatabaseManager).Default() (Database, error)
  • (*DatabaseManager).DefaultName() string
  • (*DatabaseManager).SQL(name string) (*bun.DB, error)
  • (*DatabaseManager).Mongo(name string) (*mongo.Client, error)
  • (*DatabaseManager).MongoDatabase(name string) (*MongoDatabase, error)
  • (*DatabaseManager).Redis(name string) (redis.UniversalClient, error)
  • (*DatabaseManager).RedisDatabase(name string) (*RedisDatabase, error)
  • (*DatabaseManager).OpenAll(ctx context.Context) error
  • (*DatabaseManager).CloseAll(ctx context.Context) error
  • (*DatabaseManager).HealthCheckAll(ctx context.Context) map[string]HealthStatus
  • (*DatabaseManager).List() []string
  • (*DatabaseManager).Health(ctx context.Context) error
  • (*DatabaseManager).Start(ctx context.Context) error
  • (*DatabaseManager).Stop(ctx context.Context) error

Container/App Helper Functions

Container:

  • GetManager, MustGetManager
  • GetDefault, MustGetDefault
  • GetDatabase, MustGetDatabase
  • GetSQL, MustGetSQL
  • GetMongo, MustGetMongo
  • GetRedis, MustGetRedis
  • GetNamedDatabase, MustGetNamedDatabase
  • GetNamedSQL, MustGetNamedSQL
  • GetNamedMongo, MustGetNamedMongo
  • GetNamedRedis, MustGetNamedRedis

App wrappers:

  • GetManagerFromApp, MustGetManagerFromApp
  • GetDatabaseFromApp, MustGetDatabaseFromApp
  • GetSQLFromApp, MustGetSQLFromApp
  • GetMongoFromApp, MustGetMongoFromApp
  • GetRedisFromApp, MustGetRedisFromApp
  • GetNamedDatabaseFromApp, MustGetNamedDatabaseFromApp
  • GetNamedSQLFromApp, MustGetNamedSQLFromApp
  • GetNamedMongoFromApp, MustGetNamedMongoFromApp
  • GetNamedRedisFromApp, MustGetNamedRedisFromApp

Repository and tx wrappers:

  • NewRepositoryFromContainer[T]
  • NewRepositoryFromApp[T]
  • WithTransactionFromContainer(...)
  • WithTransactionFromApp(...)

Driver Wrapper APIs

SQL Wrapper (SQLDatabase)

  • NewSQLDatabase(config, logger, metrics)
  • Open, Close, Ping
  • IsOpen, State, Name, Type
  • Driver, DB, Bun
  • Health, Stats
  • Transaction, TransactionWithOptions

Mongo Wrapper (MongoDatabase)

  • NewMongoDatabase(config, logger, metrics)
  • Open, Close, Ping
  • IsOpen, State, Name, Type
  • Driver, Client, Database, Collection
  • Health, Stats
  • Transaction, TransactionWithOptions

Redis Wrapper (RedisDatabase)

  • NewRedisDatabase(config, logger, metrics)
  • Open, Close, Ping
  • IsOpen, State, Name, Type
  • Driver, Client
  • Health, Stats
  • Pipeline, TxPipeline
  • Transaction, Pipelined, TxPipelined

Data Access and Utility APIs

Repository Pattern

  • NewRepository[T](db IDB) *Repository[T]
  • (*Repository[T]).DB() IDB
  • (*Repository[T]).Query() *bun.SelectQuery
  • CRUD and query methods:
    • FindByID, FindOne, FindAll, FindAllWithDeleted
    • Exists, Count
    • Create, CreateMany, Update, UpdateColumns
    • Delete, DeleteMany, SoftDelete, RestoreSoftDeleted, Truncate

Query options:

  • WithLimit, WithOffset, WithOrder
  • WhereActive, WhereDeleted
  • WithRelation, WithRelations

Bulk Operations

  • BulkInsert
  • BulkInsertWithOptions
  • BulkUpdate
  • BulkUpsert
  • BulkDelete
  • BulkSoftDelete
  • BulkInsertWithProgress
  • BulkUpdateWithProgress
  • ChunkSlice

Pagination

  • (*OffsetPagination).Normalize()
  • (*OffsetPagination).Offset()
  • Paginate[T](...)
  • (*CursorPagination).Normalize()
  • PaginateCursor[T](...)

Mapping Utilities

  • MapTo, MapSlice, MapPaginated, MapCursor
  • MapPointer, MapSlicePointers
  • MapError, MapSliceError, MapPaginatedError, MapCursorError
  • FilterSlice, GroupBy, IndexBy, Pluck, Unique, Partition

Transactions and Context APIs

  • WithTransaction
  • WithTransactionOptions
  • WithNestedTransaction
  • GetDB
  • MustGetDB
  • IsInTransaction
  • GetTransactionDepth
  • GetTransactionStats
  • ResetTransactionStats
  • WithSerializableTransaction
  • WithReadOnlyTransaction
  • WithRepeatableReadTransaction

Migration and Seeding APIs

Migrations

  • NewNoopMigrationLogger
  • NewMigrationManager
  • (*MigrationManager).CreateTables
  • (*MigrationManager).Migrate
  • (*MigrationManager).Rollback
  • (*MigrationManager).Status
  • (*MigrationManager).Reset
  • (*MigrationManager).AutoMigrate
  • (*MigrationManager).CreateMigration

Seeders

  • NewSeederRunner
  • (*SeederRunner).WithTracking
  • (*SeederRunner).Register
  • (*SeederRunner).RegisterMany
  • (*SeederRunner).Run
  • (*SeederRunner).RunSeeder
  • (*SeederRunner).Reset
  • (*SeederRunner).ResetAll
  • (*SeederRunner).List

Observability APIs

  • ExplainQuery
  • NewObservabilityQueryHook
  • (*ObservabilityQueryHook).WithAutoExplain
  • EnableAutoExplain
  • FormatQueryPlan

Model Base Types and Context Helpers

Model helper methods are exported on base structs in models.go:

  • BeforeInsert, BeforeUpdate, BeforeDelete
  • IsDeleted, Restore

User context helpers:

  • SetXIDUserID, GetXIDUserID
  • SetUserID, GetUserID

Error APIs

  • NewDatabaseError
  • ErrNoDatabasesConfigured
  • ErrInvalidDatabaseName
  • ErrInvalidDatabaseType
  • ErrInvalidDSN
  • ErrInvalidPoolConfig
  • ErrDatabaseNotFound
  • ErrDatabaseAlreadyExists
  • ErrDatabaseNotOpened
  • ErrInvalidDatabaseTypeOp
  • ErrConnectionFailed
  • ErrQueryFailed
  • ErrTransactionFailed
  • ErrPanicRecovered

Testing Helpers (Non-production)

  • NewTestDB
  • WithInMemory, WithLogging, WithAutoMigrate, WithTransactionRollback
  • SeedFixtures, TruncateTables, CleanupDB
  • AssertRecordExists, AssertRecordNotExists, AssertRecordCount, AssertRecordCountWhere
  • LoadFixture, LoadAllFixtures

Source Navigation Tip

go doc github.com/xraph/forge/extensions/database/...

Use this command when you need full symbol-level details while keeping this page as your architecture-first map.

How is this guide?

On this page