Files
upstream-casbin/persist/transaction.go
upstream-mirror d8971e16fb
Some checks failed
Build / test (1.21) (push) Successful in 2m21s
Build / benchmark (1.21) (push) Failing after 2m28s
golangci-lint / golangci (push) Successful in 19m40s
snapshot of https://github.com/casbin/casbin.git (master, 2026-09-15; blobs > 131072B omitted)
2026-09-15 21:46:19 +05:00

62 lines
2.4 KiB
Go

// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package persist
import "context"
// TransactionalAdapter defines the interface for adapters that support transactions.
// Adapters implementing this interface can participate in Casbin transactions.
type TransactionalAdapter interface {
Adapter
// BeginTransaction starts a new transaction and returns a transaction context.
BeginTransaction(ctx context.Context) (TransactionContext, error)
}
// TransactionContext represents a database transaction context.
// It provides methods to commit or rollback the transaction and get an adapter
// that operates within this transaction.
type TransactionContext interface {
// Commit commits the transaction.
Commit() error
// Rollback rolls back the transaction.
Rollback() error
// GetAdapter returns an adapter that operates within this transaction.
GetAdapter() Adapter
}
// PolicyOperation represents a policy operation that can be buffered in a transaction.
type PolicyOperation struct {
Type OperationType // The type of operation (add, remove, update)
Section string // The section of the policy (p, g)
PolicyType string // The policy type (p, p2, g, g2, etc.)
Rules [][]string // The policy rules to operate on
OldRules [][]string // For update operations, the old rules to replace
}
// OperationType represents the type of policy operation.
type OperationType int
const (
// OperationAdd represents adding policy rules.
OperationAdd OperationType = iota
// OperationRemove represents removing policy rules.
OperationRemove
// OperationUpdate represents updating policy rules.
OperationUpdate
)