mirror of
https://github.com/hanzoai/commerce.git
synced 2026-10-30 15:08:42 +00:00
Multi-tenant commerce and billing: orders, subscriptions, invoices, plans, usage metering and a credit ledger. One Go binary. MIT OR Apache-2.0. Claude-Session: https://claude.ai/code/session_01SAtaDFm8VDiWrhYHNNtxMw
50 lines
1.0 KiB
Go
50 lines
1.0 KiB
Go
package datastore
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/hanzoai/commerce/datastore/key"
|
|
"github.com/hanzoai/commerce/db"
|
|
)
|
|
|
|
// Delete an entity
|
|
func (d *Datastore) Delete(k Key) error {
|
|
if d.database == nil {
|
|
return errors.New("datastore: database not initialized")
|
|
}
|
|
|
|
dskey := key.ToDatastoreKey(k)
|
|
dbKey := dskey.ToDBKey(d.database)
|
|
return d.database.Delete(d.Context, dbKey)
|
|
}
|
|
|
|
func (d *Datastore) DeleteMulti(keys interface{}) error {
|
|
if d.database == nil {
|
|
return errors.New("datastore: database not initialized")
|
|
}
|
|
|
|
dskeys := convertKeys(keys)
|
|
|
|
// Convert to db.Key slice
|
|
dbKeys := make([]db.Key, len(dskeys))
|
|
for i, k := range dskeys {
|
|
dbKeys[i] = k.ToDBKey(d.database)
|
|
}
|
|
|
|
return d.database.DeleteMulti(d.Context, dbKeys)
|
|
}
|
|
|
|
// Gets an entity using datastore.Key or encoded Key
|
|
func (d *Datastore) MustDelete(k Key) {
|
|
if err := d.Delete(k); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
// Gets an entity using datastore.Key or encoded Key
|
|
func (d *Datastore) MustDeleteMulti(keys interface{}) {
|
|
if err := d.DeleteMulti(keys); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|