OOro

Write Options

Only, Omit, BatchSize, ConflictBy, CheckVersion, and CreateResult reference.

Write options make insert/update behavior explicit.

Only

db.Use[Product]().Create(ctx, product, oro.Only("Code", "Price"))

Only the named fields are written.

Omit

db.Use[Product]().Create(ctx, product, oro.Omit("CreatedAt", "UpdatedAt"))

Named fields are excluded from the write.

BatchSize

result, err := db.Use[Product]().CreateMany(ctx, products, oro.BatchSize(500))

Controls chunk size for batch insert.

CreateMany result

result, err := db.Use[Product]().CreateMany(ctx, products)
ids, err := result.IDs[uint64]()

CreateMany returns a lightweight result with row count and primary keys. Use CreateManyResult when you need full rows.

ConflictBy

saved, err := db.Use[Product]().Upsert(ctx, product,
    oro.ConflictBy("Code").Update("Price", "Stock"),
)

ConflictBy defines the unique key used for upsert. Model queries use Go field names; table queries use database columns.

CheckVersion

rows, err := db.Use[Product]().
    Where("ID", id).
    Update(ctx, oro.Map{"Price": 120}, oro.CheckVersion(version))

A stale version returns oro.ErrStaleData.

Skip hooks and events

db.Use[Product]().SkipHooks().SkipEvents().Create(ctx, product)

Use this for trusted import or maintenance jobs only.

Edit this page