AdaloExtensionPack.Core 0.2.16

dotnet add package AdaloExtensionPack.Core --version 0.2.16
NuGet\Install-Package AdaloExtensionPack.Core -Version 0.2.16
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AdaloExtensionPack.Core" Version="0.2.16" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add AdaloExtensionPack.Core --version 0.2.16
#r "nuget: AdaloExtensionPack.Core, 0.2.16"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install AdaloExtensionPack.Core as a Cake Addin
#addin nuget:?package=AdaloExtensionPack.Core&version=0.2.16

// Install AdaloExtensionPack.Core as a Cake Tool
#tool nuget:?package=AdaloExtensionPack.Core&version=0.2.16

AdaloExtensionPack.Core

nuget downloads

Helpers library to connect C# Web app to Adalo tables API

Tables

In the Startup.cs file, add in the method ConfigureServices() :

services.AddAdalo(x =>
{
    x.AddApplication("[your Adalo App Id]", "[your API token here]")
       .AddTable<SomeEntity>("[table Id]", cached: false)
       .AddTable<SomeEntity>("[table Id 2]", cached: false);
});

Then inject IAdaloTableService<SomeEntity> in your controller/services to connect directly to Adalo tables API.

Note: SomeEntity need to inherit from AdaloExtensionPack.Core.Tables.Data.AdaloEntity

Cached tables

If the cached parameter is set to the true value in the call to AddTable, a cached table service and a controller with methods to create, read, update and delete this type of entity will be generated:

cached endpoints

The generated controller can be used as an external collection in Adalo in replacement of the original table to improve performance. In this case, all the write operations must be done on the table controller to ensure the cache is always up to date.

Additionally, the entity list endpoint (GET /tables/some-entities) supports OData syntax to select, filter, order and take elements. You can read more on this syntax here.

You can access theses cached tables from your client code using this service interface: IAdaloTableCacheService<SomeEntity>

Views

Views are filtered and mapped collections available through a controller GET action.

They are more easily usable from an Adalo perspective compare to filtered Get All cache API endpoint, since they do not require knowledge of OData query syntax. Also, the views are more flexible since other mapping possibilities and aggregations can be made thanks to mapping function.

You can create a view by adding this code inside the AddAdalo() call:

x => x.AddApplication("[your Adalo App Id]", "[your API token here]")
    .AddView<SomeContext, SomeEntity, SomeProjection>(
        // Build a context which be reused in predicate and mapping. 
        // This can be a service or a shared state for example.
        serviceProvider => serviceProvider.GetRequiredService<SomeContext>(), 
        (ctx, entity) => entity.IsValid, // Predicate example
        (ctx, entity) => new SomeProjection(entity)); // Mapping

This will generate this method:

endpoints views

Security

To secure the generated controller tables and views, it is possible to require an API Key to request these endpoints.

You can do so by adding a call to WithTableCacheControllerApiKey() method:

builder.Services.AddAdalo(opts => /* ... */)
    .WithTableCacheControllerApiKey("[api-key]");

// Or

builder.Services.AddAdalo(opts =>  /* ... */)
    .WithTableCacheControllerApiKey(x => {
        x.ApiKey = "api-key";
        x.ApiKeyHeaderName = "X-Api-Key";
    });
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.2.16 75 5/24/2024
0.2.15 78 5/20/2024
0.2.14 69 5/20/2024
0.2.12 70 5/16/2024
0.2.11 62 5/16/2024
0.2.10 71 5/14/2024
0.2.9 65 5/14/2024
0.2.8 74 5/14/2024
0.2.7 65 5/14/2024
0.2.6 63 5/14/2024
0.2.5 64 5/13/2024
0.2.4 68 5/13/2024
0.2.3 60 5/13/2024
0.2.2 60 5/13/2024
0.2.1 57 5/13/2024
0.2.0 56 5/13/2024
0.1.1 322 4/9/2021
0.1.0 246 4/9/2021