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