RedBase Documentation

Welcome to the RedBase documentation portal. Browse the API reference, explore code examples, and learn how to build with REDB.

API Reference

Browse the REDB API documentation. Select a namespace or type from the tree on the left, or click on items below.

Search results for: RedbObject Clear search
C BaseFilterExpressionParser redb.Core.Query.Parsing
M ParseRedbFilter(Expression<Func<IRedbObject, bool>>) Parse LINQ predicate for base RedbObject fields (id, name, parent_id, etc.).
C GlobalPropsCache redb.Core.Caching
M FilterNeedToLoad<TProps>(List<(long objectId, Guid hash)>, out Dictionary<long, RedbObject<TProps>>) BULK: determine which objects need to be loaded from DB (set difference).
M Initialize(IRedbObjectCache) Initialize cache for this domain (called once at application startup per domain).
M Set<TProps>(RedbObject<TProps>) Save WHOLE RedbObject to cache.
I IBulkOperations redb.Core.Data
I IFilterExpressionParser redb.Core.Query.QueryExpressions
M ParseRedbFilter(Expression<Func<IRedbObject, bool>>) Parse lambda expression for filtering by base IRedbObject fields
I ILazyPropsLoader redb.Core.Providers
M LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, HashSet<long>?, int?) OPTIMIZED Props loading with structure_ids filter and custom depth.
M LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, HashSet<long>?) OPTIMIZED Props loading with structure_ids filter.
M LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, int?) BULK Props loading with custom depth for nested RedbObject.
M LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>) BULK Props loading for multiple objects with caching and parallelism.
I IObjectStorageProvider redb.Core.Providers
M AddNewObjectsAsync<TProps>(IEnumerable<IRedbObject<TProps>>, IRedbUser) BULK INSERT with explicit user: Create many new objects (does NOT check permissions).
M AddNewObjectsAsync<TProps>(IEnumerable<IRedbObject<TProps>>) BULK INSERT: Create many new objects in one operation (does NOT check permissions).
M DeleteAsync(IEnumerable<IRedbObject>, IRedbUser) Bulk delete objects by interface with explicit user (uses config.DefaultCheckPermissionsOnDelete).
M DeleteAsync(IEnumerable<IRedbObject>) Bulk delete objects by interface (uses _securityContext and config.DefaultCheckPermissionsOnDelete).
M DeleteAsync(IRedbObject, IRedbUser) Delete object with explicit user (uses config.DefaultCheckPermissionsOnDelete).
M DeleteAsync(IRedbObject) Delete object (uses _securityContext and config.DefaultCheckPermissionsOnDelete).
M LoadAsync<TProps>(IRedbObject, int, bool?) Load object from EAV (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
M LoadAsync<TProps>(IRedbObject, IRedbUser, int, bool?) Load object from EAV with explicit user (uses config.DefaultCheckPermissionsOnLoad).
M LoadWithParentsAsync<TProps>(IRedbObject, int, bool?) Load object from EAV with parent chain to root (uses _securityContext).
M LoadWithParentsAsync<TProps>(IRedbObject, IRedbUser, int, bool?) Load object from EAV with parent chain to root with explicit user.
M SaveAsync(IEnumerable<IRedbObject>, IRedbUser) Bulk save of polymorphic objects with explicit user (uses config).
M SaveAsync(IEnumerable<IRedbObject>) Bulk save of polymorphic objects (uses _securityContext and config).
M SaveAsync(IRedbObject, IRedbUser) Save object to EAV with explicit user. Determines type internally.
M SaveAsync(IRedbObject) Save object to EAV (uses _securityContext and config.DefaultCheckPermissionsOnSave).
M SaveAsync<TProps>(IRedbObject<TProps>, IRedbUser) Save generic object to EAV with explicit user (uses config.DefaultCheckPermissionsOnSave).
M SaveAsync<TProps>(IRedbObject<TProps>) Save generic object to EAV (uses _securityContext and config.DefaultCheckPermissionsOnSave).
M SoftDeleteAsync(IEnumerable<IRedbObject>, IRedbUser, long?) Mark objects for soft-deletion with explicit user.
M SoftDeleteAsync(IEnumerable<IRedbObject>, long?) Mark objects for soft-deletion (uses _securityContext).
M ThenByDescendingRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Additional descending sort by IRedbObject base fields.
M ThenByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Additional ascending sort by IRedbObject base fields.
I IOrderingExpressionParser redb.Core.Query.QueryExpressions
M ParseRedbOrdering<TKey>(Expression<Func<IRedbObject, TKey>>, SortDirection) 🆕 Parse sorting expression by base IRedbObject fields (id, name, date_create, etc.)
I IPermissionProvider redb.Core.Providers
M CanUserDeleteObject(IRedbObject, IRedbUser) Check if user can delete object.
M CanUserDeleteObject(IRedbObject) Check if current user can delete object.
M CanUserDeleteObject(RedbObject, IRedbUser) Check if user can delete object.
M CanUserDeleteObject(RedbObject) Check if current user can delete object.
M CanUserEditObject(IRedbObject, IRedbUser) Check if user can edit object.
M CanUserEditObject(IRedbObject) Check if current user can edit object.
M CanUserEditObject(RedbObject, IRedbUser) Check if user can edit object.
M CanUserEditObject(RedbObject) Check if current user can edit object.
M CanUserInsertScheme(RedbObject, IRedbUser) Check if user can create objects in object's scheme.
M CanUserSelectObject(IRedbObject, IRedbUser) Check if user can read object.
M CanUserSelectObject(IRedbObject) Check if current user can read object.
M CanUserSelectObject(RedbObject, IRedbUser) Check if user can read object.
M CanUserSelectObject(RedbObject) Check if current user can read object.
M GetEffectivePermissionsAsync(IRedbUser, IRedbObject) Get effective user permissions for object (including inheritance and roles).
M GetEffectivePermissionsBatchAsync(IRedbUser, IRedbObject[]) Get effective user permissions for multiple objects (batch).
M GetPermissionsByObjectAsync(IRedbObject) Get permissions for object.
I IPropsMaterializer redb.Core.Materialization
I IQueryableProvider redb.Core.Providers
M TreeQuery<TProps>(IEnumerable<IRedbObject>, int?) Create tree query limited to subtrees of object list (synchronous).
M TreeQuery<TProps>(IEnumerable<IRedbObject>, IRedbUser, int?) Create tree query limited to subtrees of object list with specified user (synchronous).
M TreeQuery<TProps>(IRedbObject?, int?) Create tree query limited to subtree (synchronous).
M TreeQuery<TProps>(IRedbObject?, IRedbUser, int?) Create tree query limited to subtree with specified user (synchronous).
I IRedbList redb.Core.Models.Contracts
M AddItem(string, IRedbObject, string?) Add item to list with linked object (Aggregate Root pattern)
M CreateItem(string, IRedbObject, string?) Create item for list with linked object
I IRedbObject redb.Core.Models.Contracts
I IRedbObject<TProps> redb.Core.Models.Contracts
I IRedbObjectCache redb.Core.Caching
M FilterNeedToLoad<TProps>(List<(long objectId, Guid hash)>, out Dictionary<long, RedbObject<TProps>>) BULK: determine which objects need to be loaded from DB (set difference)
M Set<TProps>(RedbObject<TProps>) Save WHOLE RedbObject to cache
I IRedbObjectSerializer redb.Core.Serialization
I IRedbQueryable<TProps> redb.Core.Query
M AggregateAsync<TResult>(Expression<Func<RedbObject<TProps>, TResult>>) Flexible aggregation - choose what to aggregate via Agg.Sum/Avg/Min/Max/Count.
M AggregateRedbAsync<TResult>(Expression<Func<IRedbObject, TResult>>) Flexible aggregation for IRedbObject base fields ONLY.
M AverageRedbAsync<TField>(Expression<Func<IRedbObject, TField>>) Average of IRedbObject base field values.
M DistinctByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) DISTINCT ON (base_field) - one object per unique IRedbObject base field value.
M GroupByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Group by IRedbObject base fields (id, scheme_id, parent_id, etc.).
M MaxRedbAsync<TField>(Expression<Func<IRedbObject, TField>>) Maximum IRedbObject base field value (ValueLong, Key, DateCreate, etc.).
M MinRedbAsync<TField>(Expression<Func<IRedbObject, TField>>) Minimum IRedbObject base field value (ValueLong, Key, DateCreate, etc.).
M OrderByDescendingRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Sort descending by IRedbObject base fields.
M OrderByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Sort ascending by IRedbObject base fields (id, name, date_create, etc.).
M Select<TResult>(Expression<Func<RedbObject<TProps>, TResult>>) Project fields - return only selected properties.
M SumRedbAsync<TField>(Expression<Func<IRedbObject, TField>>) Sum of IRedbObject base field values (ValueLong, Key, etc.).
M WhereChildrenOf(IRedbObject) Direct children of specified object.
M WhereDescendantsOf(IRedbObject, int?) All descendants of specified object (recursive).
M WhereInRedb<TValue>(Expression<Func<IRedbObject, TValue>>, IEnumerable<TValue>) Filter by IRedbObject base field in list (WHERE _field IN (...)).
M WhereRedb(Expression<Func<IRedbObject, bool>>) Filter by base object fields (Id, Name, ParentId, etc.).
I IRedbWindowedQueryable<TProps> redb.Core.Query.Window
M ToSqlStringAsync<TResult>(Expression<Func<RedbObject<TProps>, TResult>>) Returns SQL string for debugging (like EF Core ToQueryString).
I ITreeProvider redb.Core.Providers
M CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject, IRedbUser) Create child object with explicit user (uses config.DefaultCheckPermissionsOnSave).
M CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject) Create child object (uses _securityContext and config.DefaultCheckPermissionsOnSave).
M DeleteSubtreeAsync(IRedbObject, IRedbUser) Delete object subtree recursively with explicit user (uses config.DefaultCheckPermissionsOnDelete).
M DeleteSubtreeAsync(IRedbObject) Delete object subtree recursively (uses _securityContext and config.DefaultCheckPermissionsOnDelete)...
M GetChildrenAsync<TProps>(IRedbObject, IRedbUser) Get direct children of object with explicit user (uses config.DefaultCheckPermissionsOnLoad).
M GetChildrenAsync<TProps>(IRedbObject) Get direct children of object (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
M GetDescendantsAsync<TProps>(IRedbObject, int?) Get all object descendants (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
M GetDescendantsAsync<TProps>(IRedbObject, IRedbUser, int?) Get all object descendants with explicit user (uses config.DefaultCheckPermissionsOnLoad).
M GetPathToRootAsync<TProps>(IRedbObject, IRedbUser) Get path from object to root with explicit user (uses config.DefaultCheckPermissionsOnLoad).
M GetPathToRootAsync<TProps>(IRedbObject) Get path from object to root (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
M GetPolymorphicChildrenAsync(IRedbObject, IRedbUser) Get all direct children of object regardless of their schemes with explicit user.
M GetPolymorphicChildrenAsync(IRedbObject) Get all direct children of object regardless of their schemes.
M GetPolymorphicDescendantsAsync(IRedbObject, int?) Get all polymorphic descendants of object regardless of their schemes.
M GetPolymorphicDescendantsAsync(IRedbObject, IRedbUser, int?) Get all polymorphic descendants of object with explicit user.
M GetPolymorphicPathToRootAsync(IRedbObject, IRedbUser) Get polymorphic path from object to root with explicit user.
M GetPolymorphicPathToRootAsync(IRedbObject) Get polymorphic path from object to root - objects can be of different schemes.
M LoadPolymorphicTreeAsync(IRedbObject, int?) Load polymorphic tree/subtree - supports objects of different schemes in one tree.
M LoadPolymorphicTreeAsync(IRedbObject, IRedbUser, int?) Load polymorphic tree/subtree with explicit user.
M LoadTreeAsync<TProps>(IRedbObject, int?) Load tree/subtree (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
M LoadTreeAsync<TProps>(IRedbObject, IRedbUser, int?) Load tree/subtree with explicit user (uses config.DefaultCheckPermissionsOnLoad).
M MoveObjectAsync(IRedbObject, IRedbObject?, IRedbUser) Move object in tree with explicit user (uses config.DefaultCheckPermissionsOnSave).
M MoveObjectAsync(IRedbObject, IRedbObject?) Move object in tree (uses _securityContext and config.DefaultCheckPermissionsOnSave).
I ITreeRedbObject redb.Core.Models.Contracts
M IsAncestorOf(ITreeRedbObject) Checks if current node is ancestor of specified node
M IsDescendantOf(ITreeRedbObject) Checks if current node is descendant of specified node
I ITreeRedbObject<TProps> redb.Core.Models.Contracts
I IWindowSpec<TProps> redb.Core.Query.Window
M OrderByDescRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Sort within window by IRedbObject base field (descending).
M OrderByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Sort within window by IRedbObject base field (ascending).
M PartitionByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Partition by IRedbObject base field (SchemeId, OwnerId, etc.).
C LazyPropsLoader redb.MSSql.Providers
M LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, HashSet<long>?, int?) BULK Props loading with projection filter and custom depth.
M LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, HashSet<long>?) BULK Props loading with projection filter (for Select projections).
M LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, int?) BULK Props loading with custom depth for nested RedbObject.
M LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>) BULK Props loading for multiple objects via get_object_json batch.
M LoadPropsForManyPolymorphicAsync(List<IRedbObject>) BULK loading for polymorphic objects (different schemes).
C LazyPropsLoader redb.Postgres.Providers
M LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, HashSet<long>?, int?) BULK Props loading with projection filter and custom depth.
M LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, HashSet<long>?) BULK Props loading with projection filter (for Select projections).
M LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, int?) BULK Props loading with custom depth for nested RedbObject.
M LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>) BULK Props loading for multiple objects via get_object_json batch.
M LoadPropsForManyPolymorphicAsync(List<IRedbObject>) BULK loading for polymorphic objects (different schemes).
C NpgsqlBulkOperations redb.Postgres.Data
M BulkInsertObjectsAsync(IEnumerable<RedbObjectRow>) Bulk insert objects using COPY protocol.
M BulkUpdateObjectsAsync(IEnumerable<RedbObjectRow>) Bulk update objects using UPDATE FROM VALUES.
C ObjectStorageProviderBase redb.Core.Providers.Base
M AddNewObjectsAsync<TProps>(IEnumerable<IRedbObject<TProps>>, IRedbUser) 🚀 BULK INSERT with explicit user: Create multiple new objects (WITHOUT permission checks)
M AddNewObjectsAsync<TProps>(IEnumerable<IRedbObject<TProps>>) 🚀 BULK INSERT: Create multiple new objects in one operation (WITHOUT permission checks)
M AssignMissingIds(List<IRedbObject>, IRedbUser) 🎯 STEP 3: Assigning ID via GetNextKey() to all objects without ID
M CollectAllObjectsRecursively(IRedbObject, List<IRedbObject>, HashSet<long>) 🔍 STEP 2: Recursive collection of all IRedbObject (main + nested)
M ConvertToObjectRecord(IRedbObject) Convert IRedbObject to RedbObjectRow for bulk operations
M DeleteAsync(IEnumerable<IRedbObject>, IRedbUser) Bulk deletion of objects by interface with explicit user
M DeleteAsync(IEnumerable<IRedbObject>) Bulk deletion of objects by interface (uses _securityContext)
M DeleteAsync(IRedbObject, IRedbUser) Deletes an object from the database using atomic ExecuteDeleteAsync.
M DeleteAsync(IRedbObject) Delete object (uses _securityContext and config.DefaultCheckPermissionsOnDelete).
M EnsureSchemesForAllTypes(List<IRedbObject>) 🏗️ STEP 4: Creating/verifying schemas for all object types (using PostgresSchemeSyncProvider)
M ExecuteBatchByStrategy(EavSaveStrategy, List<IRedbObject>, List<RedbValue>) Executes batch save by strategy. OpenSource: only DeleteInsert.
M LoadAsync<TProps>(IRedbObject, int, bool?) Load object from EAV (uses _securityContext and config.DefaultCheckPermissionsOnLoad)
M LoadAsync<TProps>(IRedbObject, IRedbUser, int, bool?) Load object from EAV with explicitly specified user (uses config.DefaultCheckPermissionsOnLoad)
M LoadWithParentsAsync<TProps>(IRedbObject, int, bool?) Load object with parent chain to root (uses _securityContext).
M LoadWithParentsAsync<TProps>(IRedbObject, IRedbUser, int, bool?) Load object by ID with parent chain to root with explicit user.
M PrepareValuesByStrategy(List<IRedbObject>, List<RedbValue>, bool) Step 6: Strategy selection for values processing.
M PrepareValuesWithTreeDeleteInsert(List<IRedbObject>, List<RedbValue>) DeleteInsert strategy: delete all existing values, then insert new ones.
M ProcessAllObjectsPropertiesRecursively(List<IRedbObject>, List<RedbValue>) 🔄 STEP 5: Recursive processing of Props of all objects → RedbValue lists
M SaveAsync(IEnumerable<IRedbObject>, IRedbUser) 🚀 BATCH SAVE with explicit user
M SaveAsync(IEnumerable<IRedbObject>) 🚀 BATCH SAVE: Save multiple objects (new + updates)
M SaveAsync(IRedbObject, IRedbUser) Save single object via interface with explicit user.
M SaveAsync(IRedbObject) Save single object via interface. Type determined internally.
M SaveAsync<TProps>(IRedbObject<TProps>, IRedbUser) Save generic object to EAV with explicit user (uses config.DefaultCheckPermissionsOnSave).
M SaveAsync<TProps>(IRedbObject<TProps>) Save generic object to EAV (uses _securityContext and config.DefaultCheckPermissionsOnSave).
M SaveAsyncNew<TProps>(IRedbObject<TProps>, IRedbUser) 🚀 NEW SAVEASYNC: Correct recursive processing of all data types
M SaveBatchWithDeleteInsertStrategy(List<IRedbObject>, List<RedbValue>) DeleteInsert batch strategy: delete ALL values, BulkInsert/BulkUpdate of objects, BulkInsert of valu...
M SoftDeleteAsync(IEnumerable<IRedbObject>, IRedbUser, long?) Mark objects for soft-deletion with explicit user.
M SoftDeleteAsync(IEnumerable<IRedbObject>, long?) Mark objects for soft-deletion (uses _securityContext).
C OrderingExpressionParser redb.Core.Query
M ParseRedbOrdering<TKey>(Expression<Func<IRedbObject, TKey>>, SortDirection) Parse sorting by base IRedbObject fields (id, name, date_create, etc.)
C PermissionProviderBase redb.Core.Providers.Base
M CanUserDeleteObject(IRedbObject, IRedbUser) Check if user can delete object.
M CanUserDeleteObject(IRedbObject) Check if current user can delete object.
M CanUserDeleteObject(RedbObject, IRedbUser) Check if user can delete object.
M CanUserDeleteObject(RedbObject) Check if current user can delete object.
M CanUserEditObject(IRedbObject, IRedbUser) Check if user can edit object.
M CanUserEditObject(IRedbObject) Check if current user can edit object.
M CanUserEditObject(RedbObject, IRedbUser) Check if user can edit object.
M CanUserEditObject(RedbObject) Check if current user can edit object.
M CanUserInsertScheme(RedbObject, IRedbUser) Check if user can create objects in object's scheme.
M CanUserSelectObject(IRedbObject, IRedbUser) Check if user can read object.
M CanUserSelectObject(IRedbObject) Check if current user can read object.
M CanUserSelectObject(RedbObject, IRedbUser) Check if user can read object.
M CanUserSelectObject(RedbObject) Check if current user can read object.
M GetEffectivePermissionsAsync(IRedbUser, IRedbObject) Get effective user permissions for object (including inheritance and roles).
M GetEffectivePermissionsBatchAsync(IRedbUser, IRedbObject[]) Get effective user permissions for multiple objects (batch).
M GetPermissionsByObjectAsync(IRedbObject) Get permissions for object.
C PolymorphicRedbObjectConverter redb.Core.Serialization
C ProjectionFieldExtractor redb.Core.Query.Projection
M ExtractFieldPathStrings<TProps, TResult>(Expression<Func<RedbObject<TProps>, TResult>>) Extracts text field paths for SQL function search_objects_with_projection_by_paths.
M HasAggregations<TProps, TResult>(Expression<Func<RedbObject<TProps>, TResult>>) Checks if expression contains aggregation calls (Agg.Sum, etc.)
C ProLazyPropsLoader redb.Core.Pro.Materialization
C QueryableProviderBase redb.Core.Providers.Base
M TreeQuery<TProps>(IEnumerable<IRedbObject>, int?) Create tree query limited to subtrees of object list (synchronous).
M TreeQuery<TProps>(IEnumerable<IRedbObject>, IRedbUser, int?) Create tree query limited to subtrees of object list with specified user (synchronous).
M TreeQuery<TProps>(IRedbObject?, int?) Create tree query limited to subtree (synchronous).
M TreeQuery<TProps>(IRedbObject?, IRedbUser, int?) Create tree query limited to subtree with specified user (synchronous).
C RedbHash redb.Core.Utils
M ComputeFor(IRedbObject) Compute hash for any IRedbObject - only from business data (Props).
M ComputeForBaseFields(IRedbObject) Compute hash from base value_* fields of IRedbObject (for Object schemes without Props).
C RedbList redb.Core.Models.Entities
M AddItem(string, IRedbObject, string?) Add item with linked object (Aggregate Root pattern).
M CreateItem(string, IRedbObject, string?) Create item with linked object.
C RedbListItem redb.Core.Models.Entities
M ForList(IRedbList, string?, string?, IRedbObject) Create ListItem with linked object.
T RedbListItem(IRedbList, string?, string?, IRedbObject) Constructor for creating item with linked object.
M SetGlobalObjectLoader(Func<long, Task<IRedbObject?>>) Set global object loader for all ListItems.
C RedbObject redb.Core.Models.Entities
C RedbObject<TProps> redb.Core.Models.Entities
T RedbObject() Default constructor for deserialization.
T RedbObject(TProps) Constructor with properties.
C RedbObjectExtensions redb.Core.Extensions
M CreateHierarchicalPath(IEnumerable<IRedbObject>, string) Creates hierarchical path string for object
M GetAge(IRedbObject, DateTime?) Gets object age (time since creation)
M GetDebugInfo(IRedbObject) Gets brief object information for debugging
M GetDisplayName(IRedbObject, bool) Gets object display name with fallback logic
M GetTimeSinceLastModification(IRedbObject, DateTime?) Gets time since last object modification
M GetTreeLevelAsync<T>(IRedbObject, ITreeProvider) OPTIMIZED version: Gets object level in tree (root = 0)
M HasStarted(IRedbObject, DateTime?) Checks if object has started its validity
M IsActiveAt(IRedbObject, DateTime?) Checks if object is active by timestamps
M IsAncestorOfAsync<T>(IRedbObject, IRedbObject, ITreeProvider) Checks if object is an ancestor of the specified descendant
M IsDescendantOfAsync<T>(IRedbObject, IRedbObject, ITreeProvider) OPTIMIZED version: Checks if object is descendant of specified parent
M IsExpired(IRedbObject, DateTime?) Checks if object validity has expired
M IsLeafAsync<T>(IRedbObject, ITreeProvider) Checks if object is a tree leaf (without children)
C RedbObjectFactory redb.Core.Models
M CreateBatchChildAsync<TProps>(IRedbObject, IEnumerable<TProps>, bool) Batch creation of child objects with cache preloading
M CreateBatchChildAsync<TProps>(IRedbObject, IEnumerable<TProps>) Batch creation of child objects with cache preloading
M CreateChildAsync<TProps>(IRedbObject, TProps, bool) Create a new object as a child of an existing parent
M CreateChildAsync<TProps>(IRedbObject, TProps) Create a new object as a child of an existing parent
M CreateCopyAsync<TProps>(IRedbObject<TProps>, TProps) Create copy of existing object with new properties
C RedbObjectRow redb.Core.Models.Entities
C RedbQueryable<TProps> redb.Core.Query
M AggregateAsync<TResult>(Expression<Func<RedbObject<TProps>, TResult>>) Flexible aggregation - choose what to aggregate via Agg.Sum/Avg/Min/Max/Count
M AggregateRedbAsync<TResult>(Expression<Func<IRedbObject, TResult>>) Flexible aggregation ONLY for base IRedbObject fields
M AverageRedbAsync<TField>(Expression<Func<IRedbObject, TField>>) Average value of base IRedbObject field
M DistinctByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) DISTINCT ON (base_field) - one object per unique IRedbObject base field value.
M ExtractFieldPathRedb<TField>(Expression<Func<IRedbObject, TField>>) Extracts base field path from IRedbObject expression
M GroupByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Grouping by base IRedbObject fields (id, scheme_id, parent_id, etc.)
M MaxRedbAsync<TField>(Expression<Func<IRedbObject, TField>>) Maximum value of base IRedbObject field (ValueLong, Key, DateCreate, etc.)
M MinRedbAsync<TField>(Expression<Func<IRedbObject, TField>>) Minimum value of base IRedbObject field (ValueLong, Key, DateCreate, etc.)
M OrderByDescendingRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Sort descending by IRedbObject base fields.
M OrderByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Sort ascending by IRedbObject base fields (id, name, date_create, etc.).
M Select<TResult>(Expression<Func<RedbObject<TProps>, TResult>>) Project fields - return only selected properties.
M SumRedbAsync<TField>(Expression<Func<IRedbObject, TField>>) Sum of base IRedbObject field values (ValueLong, Key, etc.)
M ThenByDescendingRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Additional descending sort by IRedbObject base fields.
M ThenByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Additional ascending sort by IRedbObject base fields.
M WhereChildrenOf(IRedbObject) Direct children of specified object.
M WhereDescendantsOf(IRedbObject, int?) All descendants of specified object (recursive).
M WhereInRedb<TValue>(Expression<Func<IRedbObject, TValue>>, IEnumerable<TValue>) Filter by IRedbObject base field in list (WHERE _field IN (...)).
M WhereRedb(Expression<Func<IRedbObject, bool>>) Filter by base object fields (Id, Name, ParentId, etc.).
C RedbServiceBase redb.Core
M AddNewObjectsAsync<TProps>(IEnumerable<IRedbObject<TProps>>, IRedbUser) BULK INSERT with explicit user: Create many new objects (does NOT check permissions).
M AddNewObjectsAsync<TProps>(IEnumerable<IRedbObject<TProps>>) BULK INSERT: Create many new objects in one operation (does NOT check permissions).
M CanUserDeleteObject(IRedbObject, IRedbUser) Check if user can delete object.
M CanUserDeleteObject(IRedbObject) Check if current user can delete object.
M CanUserDeleteObject(RedbObject, IRedbUser) Check if user can delete object.
M CanUserDeleteObject(RedbObject) Check if current user can delete object.
M CanUserEditObject(IRedbObject, IRedbUser) Check if user can edit object.
M CanUserEditObject(IRedbObject) Check if current user can edit object.
M CanUserEditObject(RedbObject, IRedbUser) Check if user can edit object.
M CanUserEditObject(RedbObject) Check if current user can edit object.
M CanUserInsertScheme(RedbObject, IRedbUser) Check if user can create objects in object's scheme.
M CanUserSelectObject(IRedbObject, IRedbUser) Check if user can read object.
M CanUserSelectObject(IRedbObject) Check if current user can read object.
M CanUserSelectObject(RedbObject, IRedbUser) Check if user can read object.
M CanUserSelectObject(RedbObject) Check if current user can read object.
M CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject, IRedbUser) Create child object with explicit user (uses config.DefaultCheckPermissionsOnSave).
M CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject) Create child object (uses _securityContext and config.DefaultCheckPermissionsOnSave).
M DeleteAsync(IEnumerable<IRedbObject>, IRedbUser) Bulk delete objects by interface with explicit user (uses config.DefaultCheckPermissionsOnDelete).
M DeleteAsync(IEnumerable<IRedbObject>) Bulk delete objects by interface (uses _securityContext and config.DefaultCheckPermissionsOnDelete).
M DeleteAsync(IRedbObject, IRedbUser) Delete object with explicit user (uses config.DefaultCheckPermissionsOnDelete).
M DeleteAsync(IRedbObject) Delete object (uses _securityContext and config.DefaultCheckPermissionsOnDelete).
M DeleteSubtreeAsync(IRedbObject, IRedbUser) Delete object subtree recursively with explicit user (uses config.DefaultCheckPermissionsOnDelete).
M DeleteSubtreeAsync(IRedbObject) Delete object subtree recursively (uses _securityContext and config.DefaultCheckPermissionsOnDelete)...
M GetChildrenAsync<TProps>(IRedbObject, IRedbUser) Get direct children of object with explicit user (uses config.DefaultCheckPermissionsOnLoad).
M GetChildrenAsync<TProps>(IRedbObject) Get direct children of object (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
M GetDescendantsAsync<TProps>(IRedbObject, int?) Get all object descendants (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
M GetDescendantsAsync<TProps>(IRedbObject, IRedbUser, int?) Get all object descendants with explicit user (uses config.DefaultCheckPermissionsOnLoad).
M GetEffectivePermissionsAsync(IRedbUser, IRedbObject) Get effective user permissions for object (including inheritance and roles).
M GetEffectivePermissionsBatchAsync(IRedbUser, IRedbObject[]) Get effective user permissions for multiple objects (batch).
M GetPathToRootAsync<TProps>(IRedbObject, IRedbUser) Get path from object to root with explicit user (uses config.DefaultCheckPermissionsOnLoad).
M GetPathToRootAsync<TProps>(IRedbObject) Get path from object to root (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
M GetPermissionsByObjectAsync(IRedbObject) Get permissions for object.
M GetPolymorphicChildrenAsync(IRedbObject, IRedbUser) Get all direct children of object regardless of their schemes with explicit user.
M GetPolymorphicChildrenAsync(IRedbObject) Get all direct children of object regardless of their schemes.
M GetPolymorphicDescendantsAsync(IRedbObject, int?) Get all polymorphic descendants of object regardless of their schemes.
M GetPolymorphicDescendantsAsync(IRedbObject, IRedbUser, int?) Get all polymorphic descendants of object with explicit user.
M GetPolymorphicPathToRootAsync(IRedbObject, IRedbUser) Get polymorphic path from object to root with explicit user.
M GetPolymorphicPathToRootAsync(IRedbObject) Get polymorphic path from object to root - objects can be of different schemes.
M LoadAsync<TProps>(IRedbObject, int, bool?) Load object from EAV (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
M LoadAsync<TProps>(IRedbObject, IRedbUser, int, bool?) Load object from EAV with explicit user (uses config.DefaultCheckPermissionsOnLoad).
M LoadPolymorphicTreeAsync(IRedbObject, int?) Load polymorphic tree/subtree - supports objects of different schemes in one tree.
M LoadPolymorphicTreeAsync(IRedbObject, IRedbUser, int?) Load polymorphic tree/subtree with explicit user.
M LoadTreeAsync<TProps>(IRedbObject, int?) Load tree/subtree (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
M LoadTreeAsync<TProps>(IRedbObject, IRedbUser, int?) Load tree/subtree with explicit user (uses config.DefaultCheckPermissionsOnLoad).
M MoveObjectAsync(IRedbObject, IRedbObject?, IRedbUser) Move object in tree with explicit user (uses config.DefaultCheckPermissionsOnSave).
M MoveObjectAsync(IRedbObject, IRedbObject?) Move object in tree (uses _securityContext and config.DefaultCheckPermissionsOnSave).
M SaveAsync(IEnumerable<IRedbObject>, IRedbUser) Bulk save of polymorphic objects with explicit user (uses config).
M SaveAsync(IEnumerable<IRedbObject>) Bulk save of polymorphic objects (uses _securityContext and config).
M SaveAsync(IRedbObject, IRedbUser) Save object to EAV with explicit user. Determines type internally.
M SaveAsync(IRedbObject) Save object to EAV (uses _securityContext and config.DefaultCheckPermissionsOnSave).
M SaveAsync<TProps>(IRedbObject<TProps>, IRedbUser) Save generic object to EAV with explicit user (uses config.DefaultCheckPermissionsOnSave).
M SaveAsync<TProps>(IRedbObject<TProps>) Save generic object to EAV (uses _securityContext and config.DefaultCheckPermissionsOnSave).
M SoftDeleteAsync(IEnumerable<IRedbObject>, IRedbUser, long?) Mark objects for soft-deletion with explicit user.
M SoftDeleteAsync(IEnumerable<IRedbObject>, long?) Mark objects for soft-deletion (uses _securityContext).
M TreeQuery<TProps>(IEnumerable<IRedbObject>, int?) Create tree query limited to subtrees of object list (synchronous).
M TreeQuery<TProps>(IEnumerable<IRedbObject>, IRedbUser, int?) Create tree query limited to subtrees of object list with specified user (synchronous).
M TreeQuery<TProps>(IRedbObject?, int?) Create tree query limited to subtree (synchronous).
M TreeQuery<TProps>(IRedbObject?, IRedbUser, int?) Create tree query limited to subtree with specified user (synchronous).
C SqlBulkOperations redb.MSSql.Data
M BulkInsertObjectsAsync(IEnumerable<RedbObjectRow>) Bulk insert objects using SqlBulkCopy.
M BulkUpdateObjectsAsync(IEnumerable<RedbObjectRow>) Bulk update objects using MERGE statement.
C TreeCollection redb.Core.Models.Collections
M Add(ITreeRedbObject) Adds node to collection and automatically builds hierarchy
M FindNodes(Func<ITreeRedbObject, bool>) Finds nodes by predicate
C TreeCollection<TProps> redb.Core.Models.Collections
M Add(ITreeRedbObject<TProps>) Adds typed node to collection
M FindNodes(Func<ITreeRedbObject<TProps>, bool>) Finds typed nodes by predicate
C TreeExtensions redb.Core.Utils
M BreadthFirstTraversal(ITreeRedbObject) Breadth-First Search tree traversal for polymorphic trees.
M BreadthFirstTraversal<TProps>(ITreeRedbObject<TProps>) Breadth-First Search tree traversal for typed trees.
M DepthFirstTraversal(ITreeRedbObject) Depth-First Search tree traversal - pre-order for polymorphic trees.
M DepthFirstTraversal<TProps>(ITreeRedbObject<TProps>) Depth-First Search tree traversal - pre-order for typed trees.
M FindById(ITreeRedbObject, long) Find node by ID in polymorphic tree.
M FindById<TProps>(ITreeRedbObject<TProps>, long) Find node by ID in typed tree.
M FindNodes(ITreeRedbObject, Func<ITreeRedbObject, bool>) Find nodes by predicate in polymorphic tree.
M FlattenWithLevels(ITreeRedbObject) Flattens polymorphic tree to list with level indicators.
M FlattenWithLevels<TProps>(ITreeRedbObject<TProps>) Flattens typed tree to list with level indicators.
M GetLeaves(ITreeRedbObject) Gets all leaf nodes of polymorphic tree.
M GetLeaves<TProps>(ITreeRedbObject<TProps>) Gets all leaf nodes of typed tree.
M GetMaterializedPath(ITreeRedbObject, string) Builds materialized path for polymorphic node.
M GetMaterializedPath<TProps>(ITreeRedbObject<TProps>, string) Builds materialized path for typed node.
M GetNodesAtLevel(ITreeRedbObject, int) Gets all nodes at specific level in polymorphic tree.
M GetNodesAtLevel<TProps>(ITreeRedbObject<TProps>, int) Gets all nodes at specific level in typed tree.
M IsBalanced(ITreeRedbObject) Checks if polymorphic tree is balanced (subtree depth difference does not exceed 1).
M IsBalanced<TProps>(ITreeRedbObject<TProps>) Checks if typed tree is balanced (subtree depth difference does not exceed 1).
M PostOrderTraversal(ITreeRedbObject) Depth-First Search tree traversal - post-order for polymorphic trees.
M PostOrderTraversal<TProps>(ITreeRedbObject<TProps>) Depth-First Search tree traversal - post-order for typed trees.
C TreeObjectConverter redb.Core.Utils
M BuildParentRelationships(IEnumerable<ITreeRedbObject>) Build Parent relationships for a collection of polymorphic tree objects.
M BuildParentRelationships<TProps>(IEnumerable<TreeRedbObject<TProps>>) Build Parent relationships for a collection of tree objects.
M ToTreeObject<TProps>(IRedbObject) Convert IRedbObject to TreeRedbObject (creates new instance with Props = new TProps if types don't m...
M ToTreeObject<TProps>(RedbObject<TProps>) Convert RedbObject to TreeRedbObject preserving all properties.
M ToTreeObjectDynamic(IRedbObject) Convert IRedbObject to ITreeRedbObject dynamically preserving actual Props type.
C TreeProviderBase redb.Core.Providers.Base
M CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject, IRedbUser) Create child object with explicit user (uses config.DefaultCheckPermissionsOnSave).
M CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject) Create child object (uses _securityContext and config.DefaultCheckPermissionsOnSave).
M DeleteSubtreeAsync(IRedbObject, IRedbUser) Delete object subtree recursively with explicit user (uses config.DefaultCheckPermissionsOnDelete).
M DeleteSubtreeAsync(IRedbObject) Delete object subtree recursively (uses _securityContext and config.DefaultCheckPermissionsOnDelete)...
M GetChildrenAsync<TProps>(IRedbObject, IRedbUser) Get direct children of object with explicit user (uses config.DefaultCheckPermissionsOnLoad).
M GetChildrenAsync<TProps>(IRedbObject) Get direct children of object (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
M GetDescendantsAsync<TProps>(IRedbObject, int?) Get all object descendants (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
M GetDescendantsAsync<TProps>(IRedbObject, IRedbUser, int?) Get all object descendants with explicit user (uses config.DefaultCheckPermissionsOnLoad).
M GetPathToRootAsync<TProps>(IRedbObject, IRedbUser) Get path from object to root with explicit user (uses config.DefaultCheckPermissionsOnLoad).
M GetPathToRootAsync<TProps>(IRedbObject) Get path from object to root (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
M GetPolymorphicChildrenAsync(IRedbObject, IRedbUser) Get all direct children of object regardless of their schemes with explicit user.
M GetPolymorphicChildrenAsync(IRedbObject) Get all direct children of object regardless of their schemes.
M GetPolymorphicDescendantsAsync(IRedbObject, int?) Get all polymorphic descendants of object regardless of their schemes.
M GetPolymorphicDescendantsAsync(IRedbObject, IRedbUser, int?) Get all polymorphic descendants of object with explicit user.
M GetPolymorphicPathToRootAsync(IRedbObject, IRedbUser) Get polymorphic path from object to root with explicit user.
M GetPolymorphicPathToRootAsync(IRedbObject) Get polymorphic path from object to root - objects can be of different schemes.
M LoadPolymorphicTreeAsync(IRedbObject, int?) Load polymorphic tree/subtree - supports objects of different schemes in one tree.
M LoadPolymorphicTreeAsync(IRedbObject, IRedbUser, int?) Load polymorphic tree/subtree with explicit user.
M LoadTreeAsync<TProps>(IRedbObject, int?) Load tree/subtree (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
M LoadTreeAsync<TProps>(IRedbObject, IRedbUser, int?) Load tree/subtree with explicit user (uses config.DefaultCheckPermissionsOnLoad).
M MoveObjectAsync(IRedbObject, IRedbObject?, IRedbUser) Move object in tree with explicit user (uses config.DefaultCheckPermissionsOnSave).
M MoveObjectAsync(IRedbObject, IRedbObject?) Move object in tree (uses _securityContext and config.DefaultCheckPermissionsOnSave).
C TreeQueryableBase<TProps> redb.Core.Query.Base
M DistinctByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) DISTINCT ON (base_field) - one object per unique IRedbObject base field value.
M GroupByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Override GroupByRedb to respect tree context.
M OrderByDescendingRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Sort descending by IRedbObject base fields.
M OrderByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Sort ascending by IRedbObject base fields (id, name, date_create, etc.).
M ThenByDescendingRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Additional descending sort by IRedbObject base fields.
M ThenByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Additional ascending sort by IRedbObject base fields.
M WhereChildrenOf(IRedbObject) Direct children of specified object.
M WhereDescendantsOf(IRedbObject, int?) All descendants of specified object (recursive).
M WhereInRedb<TValue>(Expression<Func<IRedbObject, TValue>>, IEnumerable<TValue>) Filter by IRedbObject base field in list (WHERE _field IN (...)).
M WhereRedb(Expression<Func<IRedbObject, bool>>) Filter by base object fields (Id, Name, ParentId, etc.).
C TreeRedbObject redb.Core.Models.Entities
M IsAncestorOf(ITreeRedbObject) Checks if current node is ancestor of specified node
M IsDescendantOf(ITreeRedbObject) Checks if current node is descendant of specified node
C TreeRedbObject<TProps> redb.Core.Models.Entities
M IsAncestorOf(ITreeRedbObject) Checks if current node is ancestor of specified node
M IsDescendantOf(ITreeRedbObject) Checks if current node is descendant of specified node
C TreeWindowedQueryable<TProps> redb.Core.Query.Window
M SelectAsync<TResult>(Expression<Func<RedbObject<TProps>, TResult>>) Execute window query with tree context and materialize results.
C WindowSpec<TProps> redb.Core.Query.Window
M OrderByDescRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Sort within window by IRedbObject base field (descending).
M OrderByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Sort within window by IRedbObject base field (ascending).
M PartitionByRedb<TKey>(Expression<Func<IRedbObject, TKey>>) Partition by IRedbObject base field (SchemeId, OwnerId, etc.).