Skip to main content

reifydb_transaction/transaction/catalog/
primary_key.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2026 ReifyDB
3
4use reifydb_core::interface::catalog::{
5	change::CatalogTrackPrimaryKeyChangeOperations, key::PrimaryKey, object::ObjectId,
6};
7use reifydb_value::Result;
8
9use crate::{
10	change::{
11		Change,
12		OperationType::{Create, Delete},
13	},
14	transaction::admin::AdminTransaction,
15};
16
17impl CatalogTrackPrimaryKeyChangeOperations for AdminTransaction {
18	fn track_primary_key_created(&mut self, object: ObjectId, primary_key: PrimaryKey) -> Result<()> {
19		let change = Change {
20			pre: None,
21			post: Some((object, primary_key)),
22			op: Create,
23		};
24		self.changes.add_primary_key_change(change);
25		Ok(())
26	}
27
28	fn track_primary_key_deleted(&mut self, object: ObjectId, primary_key: PrimaryKey) -> Result<()> {
29		let change = Change {
30			pre: Some((object, primary_key)),
31			post: None,
32			op: Delete,
33		};
34		self.changes.add_primary_key_change(change);
35		Ok(())
36	}
37}