Class ProTreeProviderBase

Assembly: redb.Core.Pro.dll

Pro base class for TreeProvider with PVT instead of get_object_json.
Database-agnostic: SQL is provided via dialect.

public abstract class ProTreeProviderBase : TreeProviderBase, ITreeProvider

Inheritance

ObjectTreeProviderBaseProTreeProviderBase

Implements

Derived

Inherited Members

TreeProviderBase.Cache,TreeProviderBase.ConvertToPolymorphicTreeObjectWithProps(IRedbObject),TreeProviderBase.ConvertToTreeObject<TProps>(RedbObject<TProps>),TreeProviderBase.CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject),TreeProviderBase.CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject, IRedbUser),TreeProviderBase.CreateChildWithUserAsync<TProps>(TreeRedbObject<TProps>, long, long?, bool),TreeProviderBase.DeleteSubtreeAsync(IRedbObject),TreeProviderBase.DeleteSubtreeAsync(IRedbObject, IRedbUser),TreeProviderBase.DeleteSubtreeWithUserAsync(long, IRedbUser),TreeProviderBase.GetChildrenAsync<TProps>(IRedbObject),TreeProviderBase.GetChildrenAsync<TProps>(IRedbObject, IRedbUser),TreeProviderBase.GetChildrenWithUserAsync<TProps>(long, long?, bool),TreeProviderBase.GetDescendantsAsync<TProps>(IRedbObject, int?),TreeProviderBase.GetDescendantsAsync<TProps>(IRedbObject, IRedbUser, int?),TreeProviderBase.GetDescendantsWithUserAsync<TProps>(long, int, long?, bool),TreeProviderBase.GetPathToRootAsync<TProps>(IRedbObject),TreeProviderBase.GetPathToRootAsync<TProps>(IRedbObject, IRedbUser),TreeProviderBase.GetPathToRootWithUserAsync<TProps>(long, long?, bool),TreeProviderBase.GetPolymorphicChildrenAsync(IRedbObject),TreeProviderBase.GetPolymorphicChildrenAsync(IRedbObject, IRedbUser),TreeProviderBase.GetPolymorphicChildrenWithUserAsync(long, long?, bool),TreeProviderBase.GetPolymorphicDescendantsAsync(IRedbObject, int?),TreeProviderBase.GetPolymorphicDescendantsAsync(IRedbObject, IRedbUser, int?),TreeProviderBase.GetPolymorphicDescendantsWithUserAsync(long, int, long?, bool),TreeProviderBase.GetPolymorphicPathToRootAsync(IRedbObject),TreeProviderBase.GetPolymorphicPathToRootAsync(IRedbObject, IRedbUser),TreeProviderBase.GetPolymorphicPathToRootWithUserAsync(long, long?, bool),TreeProviderBase.InitializeTypeRegistryAsync(),TreeProviderBase.LoadDynamicObjectAsync(long, IRedbUser?),TreeProviderBase.LoadPolymorphicTreeAsync(IRedbObject, int?),TreeProviderBase.LoadPolymorphicTreeAsync(IRedbObject, IRedbUser, int?),TreeProviderBase.LoadPolymorphicTreeWithUserAsync(long, int, long?, bool),TreeProviderBase.LoadTreeAsync<TProps>(long, int?),TreeProviderBase.LoadTreeAsync<TProps>(long, IRedbUser, int?),TreeProviderBase.LoadTreeAsync<TProps>(IRedbObject, int?),TreeProviderBase.LoadTreeAsync<TProps>(IRedbObject, IRedbUser, int?),TreeProviderBase.LoadTreeWithUserAsync<TProps>(long, int, long?, bool),TreeProviderBase.MoveObjectAsync(IRedbObject, IRedbObject?),TreeProviderBase.MoveObjectAsync(IRedbObject, IRedbObject?, IRedbUser),TreeProviderBase.MoveObjectWithUserAsync(long, long?, long, bool)

Properties

ListProvider

ListProvider for loading list items during Props materialization.

protected IListProvider? ListProvider { get; }

Methods

CreateProLazyPropsLoader()

Creates ProLazyPropsLoader for PVT materialization.

protected abstract ILazyPropsLoader CreateProLazyPropsLoader()

GetChildrenWithUserAsync<TProps>(long, long?, bool)

Pro: PVT instead of get_object_json for typed children.

protected override Task<IEnumerable<TreeRedbObject<TProps>>> GetChildrenWithUserAsync<TProps>(long parentId, long? userId = null, bool checkPermissions = false) where TProps : class, new()

GetPolymorphicChildrenWithUserAsync(long, long?, bool)

Pro: PVT instead of get_object_json for polymorphic children.

protected override Task<IEnumerable<ITreeRedbObject>> GetPolymorphicChildrenWithUserAsync(long parentId, long? userId = null, bool checkPermissions = false)

LoadChildrenBaseAsync(long)

SQL: Load all children (base fields only).

protected abstract Task<List<RedbObjectRow>> LoadChildrenBaseAsync(long parentId)

LoadChildrenBySchemeBaseAsync(long, long)

SQL: Load children by scheme (base fields only).

protected abstract Task<List<RedbObjectRow>> LoadChildrenBySchemeBaseAsync(long parentId, long schemeId)

LoadDynamicObjectAsync(long, IRedbUser?)

Pro: PVT instead of get_object_json for dynamic object loading.

protected override Task<IRedbObject> LoadDynamicObjectAsync(long objectId, IRedbUser? user = null)

LoadObjectByIdAsync(long)

SQL: Load object by ID (base fields only).

protected abstract Task<RedbObjectRow?> LoadObjectByIdAsync(long objectId)

MapRowToRedbObject<TProps>(RedbObjectRow)

Map RedbObjectRow to typed RedbObject.

protected static RedbObject<TProps> MapRowToRedbObject<TProps>(RedbObjectRow row) where TProps : class, new()

Constructors