diff --git a/EventHub.abpsln b/EventHub.abpsln
index 9f946ef..20c3e2c 100644
--- a/EventHub.abpsln
+++ b/EventHub.abpsln
@@ -23,8 +23,8 @@
}
},
"versions": {
- "AbpFramework": "9.3.5",
- "AbpCommercial": "9.3.5",
+ "AbpFramework": "10.4.1",
+ "AbpCommercial": "10.4.1",
"AbpStudio": "1.2.2"
}
}
\ No newline at end of file
diff --git a/README.md b/README.md
index 8350170..7d55af7 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
[](https://github.com/volosoft/eventhub/actions/workflows/dotnet.yml)
-This is a reference application built with the ABP Framework. It implements the Domain Driven Design with multiple application layers.
+This is a reference application built with the ABP Framework v10.4.1. It implements Domain Driven Design with multiple application layers, separate public/admin hosts, an IdentityServer host, PostgreSQL-backed EF Core migrations, background services, and a custom payment module.
## The book
@@ -16,22 +16,79 @@ This solution is originally prepared to be a real-world example for the **Master
## Requirements
-* .NET 8.0+
+* .NET 10.0
* Docker
+* [ABP CLI](https://abp.io/docs/latest/cli) for client-side library restoration
+* [ABP Studio](https://abp.io/docs/latest/studio) if you want to use the Solution Runner and initial tasks
## How to run
-* Execute `dotnet build /graphBuild` command in the root folder of the solution.
-* Execute `etc/docker/up.ps1` to run the depending services.
-* Run `EventHub.DbMigrator` to create the database and seed initial data.
-* Run `EventHub.IdentityServer`
-* Run `EventHub.HttpApi.Host`
-* Run `EventHub.Web`
-* Run `EventHub.Admin.HttpApi.Host`
-* Run `EventHub.Web.Admin`
+### Initial tasks in ABP Studio
+
+Open `EventHub.abpsln` in ABP Studio and use the **Default** run profile. The profile defines these tasks in `etc/abp-studio/run-profiles/Default.abprun.json`:
+
+* **Initialize Solution**: Runs once per computer when the solution is initialized. It starts PostgreSQL/Redis containers, runs `abp install-libs`, and executes the DbMigrator.
+* **Start Infrastructure**: Starts the PostgreSQL and Redis containers.
+* **Install Client-Side Libraries**: Runs `abp install-libs`.
+* **Migrate Database**: Runs `EventHub.DbMigrator` to apply EF Core migrations and seed initial data.
+
+After the initial task completes, start the applications from ABP Studio's Solution Runner:
+
+* `EventHub.IdentityServer`
+* `EventHub.HttpApi.Host`
+* `EventHub.Web`
+* `EventHub.Admin.HttpApi.Host`
+* `EventHub.Admin.Web`
+
+### Manual startup
+
+From the solution root, you can run the same setup script used by ABP Studio:
+
+```powershell
+./scripts/initialize-solution.ps1
+```
+
+Or run the steps manually:
+
+```powershell
+./etc/docker/up.ps1
+abp install-libs
+dotnet run --project src/EventHub.DbMigrator/EventHub.DbMigrator.csproj
+dotnet build /graphBuild
+```
+
+Then run the application projects in this order:
+
+```powershell
+dotnet run --project src/EventHub.IdentityServer/EventHub.IdentityServer.csproj
+dotnet run --project src/EventHub.HttpApi.Host/EventHub.HttpApi.Host.csproj
+dotnet run --project src/EventHub.Web/EventHub.Web.csproj
+dotnet run --project src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj
+dotnet run --project src/EventHub.Admin.Web/EventHub.Admin.Web.csproj
+```
`admin` user's password is `1q2w3E*`
+## Solution structure
+
+* `src/EventHub.IdentityServer`: Authentication host.
+* `src/EventHub.HttpApi.Host`: Public HTTP API host.
+* `src/EventHub.Web`: Public MVC/Razor Pages web application.
+* `src/EventHub.Admin.HttpApi.Host`: Admin HTTP API host.
+* `src/EventHub.Admin.Web`: Admin Blazor WebAssembly application.
+* `src/EventHub.DbMigrator`: Console application that applies EF Core migrations and seeds data.
+* `src/EventHub.BackgroundServices`: Background worker host.
+* `modules/payment`: Custom payment module used by EventHub.
+
+## ABP documentation
+
+* [ABP Studio Solution Runner](https://abp.io/docs/latest/studio/running-applications)
+* [ABP CLI install-libs](https://abp.io/docs/latest/cli#install-libs)
+* [Layered Solution DbMigrator](https://abp.io/docs/latest/solution-templates/layered-web-application/db-migrator)
+* [MVC / Razor Pages UI](https://abp.io/docs/latest/framework/ui/mvc-razor-pages)
+* [Blazor UI](https://abp.io/docs/latest/framework/ui/blazor)
+* [Entity Framework Core integration](https://abp.io/docs/latest/framework/data/entity-framework-core)
+
## See live
See the solution live on https://openeventhub.com
diff --git a/etc/abp-studio/run-profiles/Default.abprun.json b/etc/abp-studio/run-profiles/Default.abprun.json
index 424ebdf..eb5c780 100644
--- a/etc/abp-studio/run-profiles/Default.abprun.json
+++ b/etc/abp-studio/run-profiles/Default.abprun.json
@@ -57,5 +57,31 @@
"../../docker/infrastructure/postgres.yml": {}
},
"serviceName": "eventhub"
+ },
+ "tasks": {
+ "Initialize Solution": {
+ "behaviour": 2,
+ "startCommand": "./initialize-solution.ps1",
+ "workingDirectory": "../../scripts",
+ "shortDescription": "Starts infrastructure, installs client-side libraries, and migrates the database."
+ },
+ "Start Infrastructure": {
+ "behaviour": 0,
+ "startCommand": "./start-infrastructure.ps1",
+ "workingDirectory": "../../scripts",
+ "shortDescription": "Starts PostgreSQL and Redis containers required by EventHub."
+ },
+ "Install Client-Side Libraries": {
+ "behaviour": 0,
+ "startCommand": "./install-libs.ps1",
+ "workingDirectory": "../../scripts",
+ "shortDescription": "Runs abp install-libs to restore client-side libraries."
+ },
+ "Migrate Database": {
+ "behaviour": 0,
+ "startCommand": "./migrate-database.ps1",
+ "workingDirectory": "../../scripts",
+ "shortDescription": "Runs EventHub.DbMigrator to apply migrations and seed data."
+ }
}
}
\ No newline at end of file
diff --git a/etc/azure/Dockerfile.base b/etc/azure/Dockerfile.base
index 3655948..9bbfcf6 100644
--- a/etc/azure/Dockerfile.base
+++ b/etc/azure/Dockerfile.base
@@ -1,3 +1,3 @@
-FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
+FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /app
COPY . .
\ No newline at end of file
diff --git a/global.json b/global.json
index 00e5df3..5ff4a3e 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
{
"sdk": {
- "version": "9.0.0",
+ "version": "10.0.204",
"rollForward": "latestFeature",
"allowPrerelease": true
}
diff --git a/modules/payment/README.md b/modules/payment/README.md
index 6ea8fd4..496b354 100644
--- a/modules/payment/README.md
+++ b/modules/payment/README.md
@@ -1,14 +1,48 @@
# Payment Module
-Payment module provides an API to make payments via using PayPal easily.
+The Payment module provides reusable APIs and UI integration for creating payment requests and completing PayPal checkout flows. EventHub uses it from the public web application to sell premium organization plans and receive payment completion/failure events.
+## Module structure
+* `src/Payment.Domain.Shared`: Constants, localization, permissions, and shared contracts.
+* `src/Payment.Domain`: Payment request domain model and domain services.
+* `src/Payment.Application.Contracts`: Application service contracts and DTOs.
+* `src/Payment.Application`: Payment request application services and PayPal integration logic.
+* `src/Payment.HttpApi`: Public HTTP API endpoints.
+* `src/Payment.Web`: MVC/Razor Pages UI integration for checkout pages.
+* `src/Payment.Admin.*`: Admin application services, HTTP APIs, HTTP API clients, and Blazor admin UI.
+* `src/Payment.EntityFrameworkCore`: EF Core mapping for payment entities.
## Installation
-TODO
+This module is already included in the EventHub solution and is initialized by the root solution tasks.
+When opening the solution in ABP Studio, run or allow the **Initialize Solution** task from the **Default** run profile. It starts PostgreSQL/Redis, runs `abp install-libs`, and executes `EventHub.DbMigrator`, which applies the EventHub migrations that include this module's tables.
+For manual setup from the repository root:
+
+```powershell
+./scripts/initialize-solution.ps1
+```
+
+Or run the individual steps:
+
+```powershell
+./etc/docker/up.ps1
+abp install-libs
+dotnet run --project src/EventHub.DbMigrator/EventHub.DbMigrator.csproj
+```
+
+The payment module does not have a separate standalone database in this solution; its EF Core mappings are part of the main EventHub database context.
+
+## ABP documentation
+
+* [Modularity](https://abp.io/docs/latest/framework/architecture/modularity/basics)
+* [Application services](https://abp.io/docs/latest/framework/architecture/domain-driven-design/application-services)
+* [HTTP APIs](https://abp.io/docs/latest/framework/api-development/auto-controllers)
+* [MVC / Razor Pages UI](https://abp.io/docs/latest/framework/ui/mvc-razor-pages)
+* [Blazor UI](https://abp.io/docs/latest/framework/ui/blazor)
+* [Distributed event bus](https://abp.io/docs/latest/framework/infrastructure/event-bus/distributed)
## Usage
diff --git a/modules/payment/src/Payment.Admin.Application.Contracts/Payment.Admin.Application.Contracts.csproj b/modules/payment/src/Payment.Admin.Application.Contracts/Payment.Admin.Application.Contracts.csproj
index 854d313..b52092e 100644
--- a/modules/payment/src/Payment.Admin.Application.Contracts/Payment.Admin.Application.Contracts.csproj
+++ b/modules/payment/src/Payment.Admin.Application.Contracts/Payment.Admin.Application.Contracts.csproj
@@ -9,8 +9,8 @@
-
-
+
+
all
diff --git a/modules/payment/src/Payment.Admin.Application/Payment.Admin.Application.csproj b/modules/payment/src/Payment.Admin.Application/Payment.Admin.Application.csproj
index 83ba6ee..0e1d280 100644
--- a/modules/payment/src/Payment.Admin.Application/Payment.Admin.Application.csproj
+++ b/modules/payment/src/Payment.Admin.Application/Payment.Admin.Application.csproj
@@ -1,16 +1,16 @@
-
+
- net9.0
+ net10.0
Payment.Admin
-
-
+
+
diff --git a/modules/payment/src/Payment.Admin.Blazor/Pages/Payment/Requests/Index.razor b/modules/payment/src/Payment.Admin.Blazor/Pages/Payment/Requests/Index.razor
index 4075632..65a3b6d 100644
--- a/modules/payment/src/Payment.Admin.Blazor/Pages/Payment/Requests/Index.razor
+++ b/modules/payment/src/Payment.Admin.Blazor/Pages/Payment/Requests/Index.razor
@@ -17,7 +17,7 @@
@L["ProductName"]
-
+
@L["Status"]
@@ -31,11 +31,11 @@
@L["MinCreationTime"]
-
+
@L["MaxCreationTime"]
-
+
diff --git a/modules/payment/src/Payment.Admin.Blazor/Payment.Admin.Blazor.csproj b/modules/payment/src/Payment.Admin.Blazor/Payment.Admin.Blazor.csproj
index 28ac794..bea1106 100644
--- a/modules/payment/src/Payment.Admin.Blazor/Payment.Admin.Blazor.csproj
+++ b/modules/payment/src/Payment.Admin.Blazor/Payment.Admin.Blazor.csproj
@@ -1,15 +1,15 @@
-
+
- net9.0
+ net10.0
Payment.Admin
-
+
all
diff --git a/modules/payment/src/Payment.Admin.HttpApi.Client/Payment.Admin.HttpApi.Client.csproj b/modules/payment/src/Payment.Admin.HttpApi.Client/Payment.Admin.HttpApi.Client.csproj
index 40cccbb..83cdd0e 100644
--- a/modules/payment/src/Payment.Admin.HttpApi.Client/Payment.Admin.HttpApi.Client.csproj
+++ b/modules/payment/src/Payment.Admin.HttpApi.Client/Payment.Admin.HttpApi.Client.csproj
@@ -9,7 +9,7 @@
-
+
all
diff --git a/modules/payment/src/Payment.Admin.HttpApi/Payment.Admin.HttpApi.csproj b/modules/payment/src/Payment.Admin.HttpApi/Payment.Admin.HttpApi.csproj
index 1aecf4b..2e30a66 100644
--- a/modules/payment/src/Payment.Admin.HttpApi/Payment.Admin.HttpApi.csproj
+++ b/modules/payment/src/Payment.Admin.HttpApi/Payment.Admin.HttpApi.csproj
@@ -1,15 +1,15 @@
-
+
- net9.0
+ net10.0
Payment.Admin
-
+
all
diff --git a/modules/payment/src/Payment.Application.Contracts/Payment.Application.Contracts.csproj b/modules/payment/src/Payment.Application.Contracts/Payment.Application.Contracts.csproj
index 8ddce4e..8ddf4ae 100644
--- a/modules/payment/src/Payment.Application.Contracts/Payment.Application.Contracts.csproj
+++ b/modules/payment/src/Payment.Application.Contracts/Payment.Application.Contracts.csproj
@@ -9,8 +9,8 @@
-
-
+
+
all
diff --git a/modules/payment/src/Payment.Application/Payment.Application.csproj b/modules/payment/src/Payment.Application/Payment.Application.csproj
index ffa6f32..f7345ac 100644
--- a/modules/payment/src/Payment.Application/Payment.Application.csproj
+++ b/modules/payment/src/Payment.Application/Payment.Application.csproj
@@ -1,17 +1,17 @@
-
+
- net9.0
+ net10.0
Payment
-
-
+
+
diff --git a/modules/payment/src/Payment.Domain.Shared/Payment.Domain.Shared.csproj b/modules/payment/src/Payment.Domain.Shared/Payment.Domain.Shared.csproj
index dd71396..71e8e9c 100644
--- a/modules/payment/src/Payment.Domain.Shared/Payment.Domain.Shared.csproj
+++ b/modules/payment/src/Payment.Domain.Shared/Payment.Domain.Shared.csproj
@@ -1,4 +1,4 @@
-
+
@@ -10,7 +10,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers
@@ -19,7 +19,7 @@
-
+
diff --git a/modules/payment/src/Payment.Domain/Payment.Domain.csproj b/modules/payment/src/Payment.Domain/Payment.Domain.csproj
index c0eb6dd..a65cbe8 100644
--- a/modules/payment/src/Payment.Domain/Payment.Domain.csproj
+++ b/modules/payment/src/Payment.Domain/Payment.Domain.csproj
@@ -9,7 +9,7 @@
-
+
all
diff --git a/modules/payment/src/Payment.EntityFrameworkCore/Payment.EntityFrameworkCore.csproj b/modules/payment/src/Payment.EntityFrameworkCore/Payment.EntityFrameworkCore.csproj
index 1a0c900..8ec8b2e 100644
--- a/modules/payment/src/Payment.EntityFrameworkCore/Payment.EntityFrameworkCore.csproj
+++ b/modules/payment/src/Payment.EntityFrameworkCore/Payment.EntityFrameworkCore.csproj
@@ -1,15 +1,15 @@
-
+
- net9.0
+ net10.0
Payment
-
+
all
diff --git a/modules/payment/src/Payment.HttpApi.Client/Payment.HttpApi.Client.csproj b/modules/payment/src/Payment.HttpApi.Client/Payment.HttpApi.Client.csproj
index 413299f..c57e793 100644
--- a/modules/payment/src/Payment.HttpApi.Client/Payment.HttpApi.Client.csproj
+++ b/modules/payment/src/Payment.HttpApi.Client/Payment.HttpApi.Client.csproj
@@ -9,7 +9,7 @@
-
+
all
diff --git a/modules/payment/src/Payment.HttpApi/Payment.HttpApi.csproj b/modules/payment/src/Payment.HttpApi/Payment.HttpApi.csproj
index 51b0867..a5313ff 100644
--- a/modules/payment/src/Payment.HttpApi/Payment.HttpApi.csproj
+++ b/modules/payment/src/Payment.HttpApi/Payment.HttpApi.csproj
@@ -1,16 +1,16 @@
-
+
- net9.0
+ net10.0
Payment
-
+
all
diff --git a/modules/payment/src/Payment.Web/Payment.Web.csproj b/modules/payment/src/Payment.Web/Payment.Web.csproj
index 3909da2..20ddac8 100644
--- a/modules/payment/src/Payment.Web/Payment.Web.csproj
+++ b/modules/payment/src/Payment.Web/Payment.Web.csproj
@@ -1,10 +1,10 @@
-
+
- net9.0
+ net10.0
$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
true
Library
@@ -13,8 +13,8 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers
@@ -27,7 +27,7 @@
-
+
diff --git a/modules/payment/test/Payment.Admin.Application.Tests/Payment.Admin.Application.Tests.csproj b/modules/payment/test/Payment.Admin.Application.Tests/Payment.Admin.Application.Tests.csproj
index a112969..5ef8e30 100644
--- a/modules/payment/test/Payment.Admin.Application.Tests/Payment.Admin.Application.Tests.csproj
+++ b/modules/payment/test/Payment.Admin.Application.Tests/Payment.Admin.Application.Tests.csproj
@@ -1,15 +1,15 @@
-
+
- net9.0
+ net10.0
-
+
diff --git a/modules/payment/test/Payment.Application.Tests/Payment.Application.Tests.csproj b/modules/payment/test/Payment.Application.Tests/Payment.Application.Tests.csproj
index b7556ea..3f574ba 100644
--- a/modules/payment/test/Payment.Application.Tests/Payment.Application.Tests.csproj
+++ b/modules/payment/test/Payment.Application.Tests/Payment.Application.Tests.csproj
@@ -1,16 +1,16 @@
-
+
- net9.0
+ net10.0
Payment
-
+
diff --git a/modules/payment/test/Payment.Domain.Tests/Payment.Domain.Tests.csproj b/modules/payment/test/Payment.Domain.Tests/Payment.Domain.Tests.csproj
index 1411ab1..e3521b4 100644
--- a/modules/payment/test/Payment.Domain.Tests/Payment.Domain.Tests.csproj
+++ b/modules/payment/test/Payment.Domain.Tests/Payment.Domain.Tests.csproj
@@ -1,14 +1,14 @@
-
+
- net9.0
+ net10.0
Payment
-
+
diff --git a/modules/payment/test/Payment.EntityFrameworkCore.Tests/Payment.EntityFrameworkCore.Tests.csproj b/modules/payment/test/Payment.EntityFrameworkCore.Tests/Payment.EntityFrameworkCore.Tests.csproj
index a9b9664..8c012b4 100644
--- a/modules/payment/test/Payment.EntityFrameworkCore.Tests/Payment.EntityFrameworkCore.Tests.csproj
+++ b/modules/payment/test/Payment.EntityFrameworkCore.Tests/Payment.EntityFrameworkCore.Tests.csproj
@@ -1,18 +1,18 @@
-
+
- net9.0
+ net10.0
Payment
-
-
+
+
-
+
diff --git a/modules/payment/test/Payment.TestBase/Payment.TestBase.csproj b/modules/payment/test/Payment.TestBase/Payment.TestBase.csproj
index 18de477..8a2790e 100644
--- a/modules/payment/test/Payment.TestBase/Payment.TestBase.csproj
+++ b/modules/payment/test/Payment.TestBase/Payment.TestBase.csproj
@@ -1,22 +1,22 @@
-
+
- net9.0
+ net10.0
Payment
-
+
-
-
-
+
+
+
diff --git a/scripts/initialize-solution.ps1 b/scripts/initialize-solution.ps1
new file mode 100644
index 0000000..a81d287
--- /dev/null
+++ b/scripts/initialize-solution.ps1
@@ -0,0 +1,7 @@
+$ErrorActionPreference = 'Stop'
+
+$scriptDir = $PSScriptRoot
+
+& (Join-Path $scriptDir 'start-infrastructure.ps1')
+& (Join-Path $scriptDir 'install-libs.ps1')
+& (Join-Path $scriptDir 'migrate-database.ps1')
diff --git a/scripts/install-libs.ps1 b/scripts/install-libs.ps1
new file mode 100644
index 0000000..9ba2d31
--- /dev/null
+++ b/scripts/install-libs.ps1
@@ -0,0 +1,11 @@
+$ErrorActionPreference = 'Stop'
+
+$repoRoot = Resolve-Path (Join-Path $PSScriptRoot '..')
+
+Push-Location $repoRoot
+try {
+ abp install-libs
+}
+finally {
+ Pop-Location
+}
diff --git a/scripts/migrate-database.ps1 b/scripts/migrate-database.ps1
new file mode 100644
index 0000000..7bb7c21
--- /dev/null
+++ b/scripts/migrate-database.ps1
@@ -0,0 +1,11 @@
+$ErrorActionPreference = 'Stop'
+
+$repoRoot = Resolve-Path (Join-Path $PSScriptRoot '..')
+
+Push-Location $repoRoot
+try {
+ dotnet run --project 'src/EventHub.DbMigrator/EventHub.DbMigrator.csproj'
+}
+finally {
+ Pop-Location
+}
diff --git a/scripts/start-infrastructure.ps1 b/scripts/start-infrastructure.ps1
new file mode 100644
index 0000000..aec141e
--- /dev/null
+++ b/scripts/start-infrastructure.ps1
@@ -0,0 +1,13 @@
+$ErrorActionPreference = 'Stop'
+
+$repoRoot = Resolve-Path (Join-Path $PSScriptRoot '..')
+$dockerDirectory = Join-Path $repoRoot 'etc/docker'
+$dockerScript = Join-Path $dockerDirectory 'up.ps1'
+
+Push-Location $dockerDirectory
+try {
+ & $dockerScript
+}
+finally {
+ Pop-Location
+}
diff --git a/src/EventHub.Admin.Application.Contracts/EventHub.Admin.Application.Contracts.csproj b/src/EventHub.Admin.Application.Contracts/EventHub.Admin.Application.Contracts.csproj
index 18950b6..51c391b 100644
--- a/src/EventHub.Admin.Application.Contracts/EventHub.Admin.Application.Contracts.csproj
+++ b/src/EventHub.Admin.Application.Contracts/EventHub.Admin.Application.Contracts.csproj
@@ -13,11 +13,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/src/EventHub.Admin.Application/EventHub.Admin.Application.csproj b/src/EventHub.Admin.Application/EventHub.Admin.Application.csproj
index 086436a..f5212f3 100644
--- a/src/EventHub.Admin.Application/EventHub.Admin.Application.csproj
+++ b/src/EventHub.Admin.Application/EventHub.Admin.Application.csproj
@@ -1,9 +1,9 @@
-
+
- net9.0
+ net10.0
EventHub.Admin
@@ -14,11 +14,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/src/EventHub.Admin.HttpApi.Client/EventHub.Admin.HttpApi.Client.csproj b/src/EventHub.Admin.HttpApi.Client/EventHub.Admin.HttpApi.Client.csproj
index 54e98cf..8245c26 100644
--- a/src/EventHub.Admin.HttpApi.Client/EventHub.Admin.HttpApi.Client.csproj
+++ b/src/EventHub.Admin.HttpApi.Client/EventHub.Admin.HttpApi.Client.csproj
@@ -13,11 +13,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/src/EventHub.Admin.HttpApi.Host/Dockerfile b/src/EventHub.Admin.HttpApi.Host/Dockerfile
index 1e651c9..54762f5 100644
--- a/src/EventHub.Admin.HttpApi.Host/Dockerfile
+++ b/src/EventHub.Admin.HttpApi.Host/Dockerfile
@@ -1,5 +1,5 @@
- FROM mcr.microsoft.com/dotnet/aspnet:9.0
- COPY bin/Release/net9.0/publish/ app/
+ FROM mcr.microsoft.com/dotnet/aspnet:10.0
+ COPY bin/Release/net10.0/publish/ app/
WORKDIR /app
EXPOSE 80
ENV ASPNETCORE_URLS=http://+:80
diff --git a/src/EventHub.Admin.HttpApi.Host/Dockerfile.azure b/src/EventHub.Admin.HttpApi.Host/Dockerfile.azure
index ee5ac5a..e1e315e 100644
--- a/src/EventHub.Admin.HttpApi.Host/Dockerfile.azure
+++ b/src/EventHub.Admin.HttpApi.Host/Dockerfile.azure
@@ -5,7 +5,7 @@ FROM ${BASE_IMAGE} AS base
WORKDIR /app/eventhub/src/EventHub.Admin.HttpApi.Host
RUN dotnet publish -c Release -o bin/Release/publish
-FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS publish
+FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS publish
WORKDIR /app
EXPOSE 80
ENV ASPNETCORE_URLS=http://+:80
diff --git a/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj b/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj
index 400add0..e9790a2 100644
--- a/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj
+++ b/src/EventHub.Admin.HttpApi.Host/EventHub.Admin.HttpApi.Host.csproj
@@ -1,29 +1,29 @@
-
+
- net9.0
+ net10.0
EventHub.Admin
true
EventHub-4681b4fd-151f-4221-84a4-929d86723e4c
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
diff --git a/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs b/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs
index 8c63eaa..f435f71 100644
--- a/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs
+++ b/src/EventHub.Admin.HttpApi.Host/EventHubAdminHttpApiHostModule.cs
@@ -17,7 +17,7 @@ using Microsoft.AspNetCore.Localization;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
-using Microsoft.OpenApi.Models;
+using Microsoft.OpenApi;
using StackExchange.Redis;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc;
diff --git a/src/EventHub.Admin.HttpApi/EventHub.Admin.HttpApi.csproj b/src/EventHub.Admin.HttpApi/EventHub.Admin.HttpApi.csproj
index 6b27c4e..c762fc5 100644
--- a/src/EventHub.Admin.HttpApi/EventHub.Admin.HttpApi.csproj
+++ b/src/EventHub.Admin.HttpApi/EventHub.Admin.HttpApi.csproj
@@ -1,9 +1,9 @@
-
+
- net9.0
+ net10.0
EventHub.Admin
@@ -13,11 +13,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor b/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor
index 30a80ac..0a6367f 100644
--- a/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor
+++ b/src/EventHub.Admin.Web/Components/UserPicker/UserPicker.razor
@@ -1,4 +1,4 @@
-@using EventHub.Admin.Users
+@using EventHub.Admin.Users
@inherits EventHubComponentBase
@inject IUserAppService UserAppService
@@ -13,7 +13,7 @@
@L["UserName"]
-
+
@@ -30,34 +30,34 @@
- @if (SelectAllUsers.ContainsKey(context.Id))
+ @if (SelectAllUsers.ContainsKey(context.Item.Id))
{
-
+
}
- @(context.Username)
+ @(context.Item.Username)
- @(context.Name)
+ @(context.Item.Name)
- @(context.Surname)
+ @(context.Item.Surname)
- @(context.Email)
+ @(context.Item.Email)
diff --git a/src/EventHub.Admin.Web/Dockerfile b/src/EventHub.Admin.Web/Dockerfile
index a7b6c6d..e69fc43 100644
--- a/src/EventHub.Admin.Web/Dockerfile
+++ b/src/EventHub.Admin.Web/Dockerfile
@@ -1,3 +1,3 @@
FROM nginx:latest
-COPY ./bin/Release/net9.0/publish/wwwroot/ /usr/share/nginx/html/
+COPY ./bin/Release/net10.0/publish/wwwroot/ /usr/share/nginx/html/
COPY ./nginx.conf /etc/nginx/conf.d/default.conf
\ No newline at end of file
diff --git a/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj b/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj
index c7fd0eb..1e7800a 100644
--- a/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj
+++ b/src/EventHub.Admin.Web/EventHub.Admin.Web.csproj
@@ -1,7 +1,7 @@
-
+
- net9.0
+ net10.0
true
@@ -11,17 +11,19 @@
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
+
diff --git a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor
index 6526d7b..f94f691 100644
--- a/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor
+++ b/src/EventHub.Admin.Web/Pages/AttendeeDetail.razor
@@ -35,7 +35,7 @@
diff --git a/src/EventHub.Admin.Web/Pages/EventManagement.razor b/src/EventHub.Admin.Web/Pages/EventManagement.razor
index 55b74e9..e488438 100644
--- a/src/EventHub.Admin.Web/Pages/EventManagement.razor
+++ b/src/EventHub.Admin.Web/Pages/EventManagement.razor
@@ -1,4 +1,4 @@
-@page "/events"
+@page "/events"
@using EventHub.Admin.Events
@using EventHub.Admin.Permissions
@using EventHub.Events
@@ -22,37 +22,37 @@
@L["Title"]
-
+
@L["OrganizationDisplayName"]
-
+
@L["MinStartTime"]
-
+
@L["MaxStartTime"]
-
+
@L["MinAttendeeCount"]
-
+
@L["MaxAttendeeCount"]
-
+
@@ -70,12 +70,12 @@
@@ -126,31 +126,31 @@
@L["Title"] *
-
+
-
+
@L["Description"] *
-
+
-
+
@L["IsOnline"]
-
- @L["Online"]
- @L["InPerson"]
+
+ @L["Online"]
+ @L["InPerson"]
@@ -158,7 +158,7 @@
@L["Language"]
-
+
@if (Languages != null && Languages.Any())
{
foreach (var language in Languages)
@@ -175,11 +175,11 @@
@L["OnlineLink"] *
-
+
-
+
}
@@ -188,7 +188,7 @@
@L["Country"] *
-
+
@if (Countries != null && Countries.Any())
{
@foreach (var country in Countries)
@@ -203,11 +203,11 @@
@L["City"] *
-
+
-
+
}
@@ -215,11 +215,11 @@
@L["Capacity"]
-
+
-
+
@@ -230,21 +230,21 @@
@L["StartTime"] *
-
+
-
+
@L["EndTime"] *
-
+
-
+
@@ -261,7 +261,7 @@
@L["ChooseCoverImage"]
-
+
@if (DisabledCoverImageButton)
diff --git a/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor b/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor
index fd27350..1aba6ef 100644
--- a/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor
+++ b/src/EventHub.Admin.Web/Pages/OrganizationManagement.razor
@@ -27,28 +27,28 @@
@L["Name"]
-
+
@L["DisplayName"]
-
+
@L["MinMemberCount"]
-
+
@L["MaxMemberCount"]
-
+
@@ -67,17 +67,17 @@
@@ -125,66 +125,66 @@
@L["DisplayName"] *
-
+
-
+
@L["Description"] *
-
+
-
+
@L["Website"]
-
+
-
+
@L["TwitterUsername"]
-
+
-
+
@L["GitHubUsername"]
-
+
-
+
@L["FacebookUsername"]
-
+
-
+
@@ -192,22 +192,22 @@
@L["InstagramUsername"]
-
+
-
+
@L["MediumUsername"]
-
+
-
+
@@ -236,7 +236,7 @@
@L["ChooseProfileImage"]
-
+
@if (DisabledProfileImageButton)
diff --git a/src/EventHub.Admin.Web/Pages/OrganizationMembershipManagement.razor b/src/EventHub.Admin.Web/Pages/OrganizationMembershipManagement.razor
index fa49bf4..5987fc3 100644
--- a/src/EventHub.Admin.Web/Pages/OrganizationMembershipManagement.razor
+++ b/src/EventHub.Admin.Web/Pages/OrganizationMembershipManagement.razor
@@ -25,14 +25,14 @@
@L["OrganizationName"]
-
+
@L["UserName"]
-
+
diff --git a/src/EventHub.Application.Contracts/EventHub.Application.Contracts.csproj b/src/EventHub.Application.Contracts/EventHub.Application.Contracts.csproj
index d872643..63e70e9 100644
--- a/src/EventHub.Application.Contracts/EventHub.Application.Contracts.csproj
+++ b/src/EventHub.Application.Contracts/EventHub.Application.Contracts.csproj
@@ -13,8 +13,8 @@
-
-
+
+
diff --git a/src/EventHub.Application/EventHub.Application.csproj b/src/EventHub.Application/EventHub.Application.csproj
index 9431f00..b4cfbdb 100644
--- a/src/EventHub.Application/EventHub.Application.csproj
+++ b/src/EventHub.Application/EventHub.Application.csproj
@@ -1,9 +1,9 @@
-
+
- net9.0
+ net10.0
EventHub
@@ -14,8 +14,8 @@
-
-
+
+
diff --git a/src/EventHub.BackgroundServices/Dockerfile b/src/EventHub.BackgroundServices/Dockerfile
index 0ecb572..7381e9a 100644
--- a/src/EventHub.BackgroundServices/Dockerfile
+++ b/src/EventHub.BackgroundServices/Dockerfile
@@ -1,5 +1,5 @@
- FROM mcr.microsoft.com/dotnet/aspnet:9.0
- COPY bin/Release/net9.0/ app/
+ FROM mcr.microsoft.com/dotnet/aspnet:10.0
+ COPY bin/Release/net10.0/ app/
WORKDIR /app
EXPOSE 80
ENV ASPNETCORE_URLS=http://+:80
diff --git a/src/EventHub.BackgroundServices/Dockerfile.azure b/src/EventHub.BackgroundServices/Dockerfile.azure
index d629a07..0bbe18c 100644
--- a/src/EventHub.BackgroundServices/Dockerfile.azure
+++ b/src/EventHub.BackgroundServices/Dockerfile.azure
@@ -5,7 +5,7 @@ FROM ${BASE_IMAGE} AS base
WORKDIR /app/eventhub/src/EventHub.BackgroundServices
RUN dotnet publish -c Release -o bin/Release/publish
-FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS publish
+FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS publish
WORKDIR /app
EXPOSE 80
ENV ASPNETCORE_URLS=http://+:80
diff --git a/src/EventHub.BackgroundServices/EventHub.BackgroundServices.csproj b/src/EventHub.BackgroundServices/EventHub.BackgroundServices.csproj
index d533e8e..412e66a 100644
--- a/src/EventHub.BackgroundServices/EventHub.BackgroundServices.csproj
+++ b/src/EventHub.BackgroundServices/EventHub.BackgroundServices.csproj
@@ -1,10 +1,10 @@
-
+
Exe
- net9.0
+ net10.0
EventHub
EventHub-4681b4fd-151f-4221-84a4-929d86723e4c
@@ -14,18 +14,18 @@
-
-
-
+
+
+
-
-
+
+
-
+
diff --git a/src/EventHub.DbMigrator/Dockerfile b/src/EventHub.DbMigrator/Dockerfile
index 9fc2d67..3a12a2d 100644
--- a/src/EventHub.DbMigrator/Dockerfile
+++ b/src/EventHub.DbMigrator/Dockerfile
@@ -1,5 +1,5 @@
- FROM mcr.microsoft.com/dotnet/aspnet:9.0-jammy
- COPY bin/Release/net9.0/ app/
+ FROM mcr.microsoft.com/dotnet/aspnet:10.0-jammy
+ COPY bin/Release/net10.0/ app/
WORKDIR /app
EXPOSE 80
ENV ASPNETCORE_URLS=http://+:80
diff --git a/src/EventHub.DbMigrator/Dockerfile.azure b/src/EventHub.DbMigrator/Dockerfile.azure
index 786c5e8..e676886 100644
--- a/src/EventHub.DbMigrator/Dockerfile.azure
+++ b/src/EventHub.DbMigrator/Dockerfile.azure
@@ -5,7 +5,7 @@ FROM ${BASE_IMAGE} AS base
WORKDIR /app/eventhub/src/EventHub.DbMigrator
RUN dotnet publish -c Release -o bin/Release/publish
-FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS publish
+FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS publish
WORKDIR /app
COPY --from=base /app/eventhub/src/EventHub.DbMigrator/bin/Release/publish .
ENTRYPOINT ["dotnet", "EventHub.DbMigrator.dll"]
\ No newline at end of file
diff --git a/src/EventHub.DbMigrator/EventHub.DbMigrator.csproj b/src/EventHub.DbMigrator/EventHub.DbMigrator.csproj
index 9a69609..5083970 100644
--- a/src/EventHub.DbMigrator/EventHub.DbMigrator.csproj
+++ b/src/EventHub.DbMigrator/EventHub.DbMigrator.csproj
@@ -1,10 +1,10 @@
-
+
Exe
- net9.0
+ net10.0
@@ -23,11 +23,11 @@
-
+
-
+
diff --git a/src/EventHub.Domain.Shared/EventHub.Domain.Shared.csproj b/src/EventHub.Domain.Shared/EventHub.Domain.Shared.csproj
index e6db96b..56e24f0 100644
--- a/src/EventHub.Domain.Shared/EventHub.Domain.Shared.csproj
+++ b/src/EventHub.Domain.Shared/EventHub.Domain.Shared.csproj
@@ -1,4 +1,4 @@
-
+
@@ -13,14 +13,14 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -29,7 +29,7 @@
-
+
diff --git a/src/EventHub.Domain/EventHub.Domain.csproj b/src/EventHub.Domain/EventHub.Domain.csproj
index e12eb6a..62a26fd 100644
--- a/src/EventHub.Domain/EventHub.Domain.csproj
+++ b/src/EventHub.Domain/EventHub.Domain.csproj
@@ -1,9 +1,9 @@
-
+
- net9.0
+ net10.0
EventHub
true
@@ -14,16 +14,16 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -32,7 +32,7 @@
-
+
diff --git a/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj b/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj
index 5e4da1d..3215dec 100644
--- a/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj
+++ b/src/EventHub.EntityFrameworkCore/EventHub.EntityFrameworkCore.csproj
@@ -1,9 +1,9 @@
-
+
- net9.0
+ net10.0
EventHub
@@ -12,20 +12,20 @@
-
+
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/src/EventHub.EntityFrameworkCore/Migrations/20260618143857_Upgrade_Abp_Version_10_4.Designer.cs b/src/EventHub.EntityFrameworkCore/Migrations/20260618143857_Upgrade_Abp_Version_10_4.Designer.cs
new file mode 100644
index 0000000..579d777
--- /dev/null
+++ b/src/EventHub.EntityFrameworkCore/Migrations/20260618143857_Upgrade_Abp_Version_10_4.Designer.cs
@@ -0,0 +1,3539 @@
+//
+using System;
+using EventHub.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+using Volo.Abp.EntityFrameworkCore;
+
+#nullable disable
+
+namespace EventHub.Migrations
+{
+ [DbContext(typeof(EventHubDbContext))]
+ [Migration("20260618143857_Upgrade_Abp_Version_10_4")]
+ partial class Upgrade_Abp_Version_10_4
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql)
+ .HasAnnotation("ProductVersion", "10.0.9")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("EventHub.Countries.Country", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(64)
+ .HasColumnType("character varying(64)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Name");
+
+ b.ToTable("EhCountries", (string)null);
+ });
+
+ modelBuilder.Entity("EventHub.Events.Event", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid");
+
+ b.Property("Capacity")
+ .HasColumnType("integer");
+
+ b.Property("City")
+ .HasMaxLength(32)
+ .HasColumnType("character varying(32)");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CountryId")
+ .HasColumnType("uuid");
+
+ b.Property("CountryName")
+ .HasColumnType("text");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uuid")
+ .HasColumnName("CreatorId");
+
+ b.Property("DeleterId")
+ .HasColumnType("uuid")
+ .HasColumnName("DeleterId");
+
+ b.Property("DeletionTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("DeletionTime");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasMaxLength(2000)
+ .HasColumnType("character varying(2000)");
+
+ b.Property("EndTime")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ExtraProperties")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("IsDeleted")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("boolean")
+ .HasDefaultValue(false)
+ .HasColumnName("IsDeleted");
+
+ b.Property("IsDraft")
+ .HasColumnType("boolean");
+
+ b.Property("IsEmailSentToMembers")
+ .HasColumnType("boolean");
+
+ b.Property("IsOnline")
+ .HasColumnType("boolean");
+
+ b.Property("IsRemindingEmailSent")
+ .HasColumnType("boolean");
+
+ b.Property("IsTimingChangeEmailSent")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("boolean")
+ .HasDefaultValue(true);
+
+ b.Property("Language")
+ .HasMaxLength(16)
+ .HasColumnType("character varying(16)");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uuid")
+ .HasColumnName("LastModifierId");
+
+ b.Property("OnlineLink")
+ .HasMaxLength(2000)
+ .HasColumnType("character varying(2000)");
+
+ b.Property("OrganizationId")
+ .HasColumnType("uuid");
+
+ b.Property("StartTime")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("TimingChangeCount")
+ .HasColumnType("integer");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)");
+
+ b.Property("Url")
+ .IsRequired()
+ .HasMaxLength(69)
+ .HasColumnType("character varying(69)");
+
+ b.Property("UrlCode")
+ .IsRequired()
+ .HasMaxLength(8)
+ .HasColumnType("character varying(8)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CountryId");
+
+ b.HasIndex("IsEmailSentToMembers");
+
+ b.HasIndex("StartTime");
+
+ b.HasIndex("UrlCode");
+
+ b.HasIndex("IsRemindingEmailSent", "StartTime");
+
+ b.HasIndex("OrganizationId", "StartTime");
+
+ b.ToTable("EhEvents", (string)null);
+ });
+
+ modelBuilder.Entity("EventHub.Events.Registrations.EventRegistration", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uuid")
+ .HasColumnName("CreatorId");
+
+ b.Property("EventId")
+ .HasColumnType("uuid");
+
+ b.Property("ExtraProperties")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("UserId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.HasIndex("EventId", "UserId");
+
+ b.ToTable("EhEventRegistrations", (string)null);
+ });
+
+ modelBuilder.Entity("EventHub.Events.Session", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasMaxLength(2000)
+ .HasColumnType("character varying(2000)");
+
+ b.Property("EndTime")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("Language")
+ .IsRequired()
+ .HasMaxLength(16)
+ .HasColumnType("character varying(16)");
+
+ b.Property("StartTime")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)");
+
+ b.Property("TrackId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("TrackId");
+
+ b.ToTable("EhEventSessions", (string)null);
+ });
+
+ modelBuilder.Entity("EventHub.Events.Speaker", b =>
+ {
+ b.Property("SessionId")
+ .HasColumnType("uuid");
+
+ b.Property("UserId")
+ .HasColumnType("uuid");
+
+ b.HasKey("SessionId", "UserId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("EhEventSpeakers", (string)null);
+ });
+
+ modelBuilder.Entity("EventHub.Events.Track", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid");
+
+ b.Property("EventId")
+ .HasColumnType("uuid");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(64)
+ .HasColumnType("character varying(64)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("EventId");
+
+ b.ToTable("EhEventTracks", (string)null);
+ });
+
+ modelBuilder.Entity("EventHub.Organizations.Memberships.OrganizationMembership", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uuid")
+ .HasColumnName("CreatorId");
+
+ b.Property("ExtraProperties")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("OrganizationId")
+ .HasColumnType("uuid");
+
+ b.Property("UserId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.HasIndex("OrganizationId", "UserId");
+
+ b.ToTable("EhOrganizationMemberships", (string)null);
+ });
+
+ modelBuilder.Entity("EventHub.Organizations.Organization", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uuid")
+ .HasColumnName("CreatorId");
+
+ b.Property("DeleterId")
+ .HasColumnType("uuid")
+ .HasColumnName("DeleterId");
+
+ b.Property("DeletionTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("DeletionTime");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("character varying(1000)");
+
+ b.Property("DisplayName")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)");
+
+ b.Property("ExtraProperties")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("FacebookUsername")
+ .HasColumnType("text");
+
+ b.Property("GitHubUsername")
+ .HasColumnType("text");
+
+ b.Property("InstagramUsername")
+ .HasColumnType("text");
+
+ b.Property("IsDeleted")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("boolean")
+ .HasDefaultValue(false)
+ .HasColumnName("IsDeleted");
+
+ b.Property("IsSendPaidEnrollmentReminderEmail")
+ .HasColumnType("boolean");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uuid")
+ .HasColumnName("LastModifierId");
+
+ b.Property("MediumUsername")
+ .HasColumnType("text");
+
+ b.Property("MemberCount")
+ .HasColumnType("integer");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(32)
+ .HasColumnType("character varying(32)");
+
+ b.Property("OwnerUserId")
+ .HasColumnType("uuid");
+
+ b.Property("PaidEnrollmentEndDate")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("PlanType")
+ .HasColumnType("smallint");
+
+ b.Property("TwitterUsername")
+ .HasColumnType("text");
+
+ b.Property("Website")
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("DisplayName");
+
+ b.HasIndex("Name");
+
+ b.HasIndex("OwnerUserId");
+
+ b.ToTable("EhOrganizations", (string)null);
+ });
+
+ modelBuilder.Entity("Payment.PaymentRequests.PaymentRequest", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uuid")
+ .HasColumnName("CreatorId");
+
+ b.Property("Currency")
+ .HasColumnType("text");
+
+ b.Property("CustomerId")
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)");
+
+ b.Property("ExtraProperties")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("FailReason")
+ .HasColumnType("text");
+
+ b.Property("IsDeleted")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("boolean")
+ .HasDefaultValue(false)
+ .HasColumnName("IsDeleted");
+
+ b.Property("Price")
+ .HasColumnType("numeric");
+
+ b.Property("ProductId")
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)");
+
+ b.Property("ProductName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("character varying(200)");
+
+ b.Property("State")
+ .HasColumnType("smallint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CustomerId");
+
+ b.HasIndex("State");
+
+ b.ToTable("PayPaymentRequests", (string)null);
+ });
+
+ modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ApplicationName")
+ .HasMaxLength(96)
+ .HasColumnType("character varying(96)")
+ .HasColumnName("ApplicationName");
+
+ b.Property("BrowserInfo")
+ .HasMaxLength(512)
+ .HasColumnType("character varying(512)")
+ .HasColumnName("BrowserInfo");
+
+ b.Property("ClientId")
+ .HasMaxLength(64)
+ .HasColumnType("character varying(64)")
+ .HasColumnName("ClientId");
+
+ b.Property("ClientIpAddress")
+ .HasMaxLength(64)
+ .HasColumnType("character varying(64)")
+ .HasColumnName("ClientIpAddress");
+
+ b.Property("ClientName")
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)")
+ .HasColumnName("ClientName");
+
+ b.Property("Comments")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("Comments");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CorrelationId")
+ .HasMaxLength(64)
+ .HasColumnType("character varying(64)")
+ .HasColumnName("CorrelationId");
+
+ b.Property("Exceptions")
+ .HasColumnType("text");
+
+ b.Property("ExecutionDuration")
+ .HasColumnType("integer")
+ .HasColumnName("ExecutionDuration");
+
+ b.Property("ExecutionTime")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ExtraProperties")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("HttpMethod")
+ .HasMaxLength(16)
+ .HasColumnType("character varying(16)")
+ .HasColumnName("HttpMethod");
+
+ b.Property("HttpStatusCode")
+ .HasColumnType("integer")
+ .HasColumnName("HttpStatusCode");
+
+ b.Property("ImpersonatorTenantId")
+ .HasColumnType("uuid")
+ .HasColumnName("ImpersonatorTenantId");
+
+ b.Property("ImpersonatorTenantName")
+ .HasMaxLength(64)
+ .HasColumnType("character varying(64)")
+ .HasColumnName("ImpersonatorTenantName");
+
+ b.Property("ImpersonatorUserId")
+ .HasColumnType("uuid")
+ .HasColumnName("ImpersonatorUserId");
+
+ b.Property("ImpersonatorUserName")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("ImpersonatorUserName");
+
+ b.Property("TenantId")
+ .HasColumnType("uuid")
+ .HasColumnName("TenantId");
+
+ b.Property("TenantName")
+ .HasMaxLength(64)
+ .HasColumnType("character varying(64)")
+ .HasColumnName("TenantName");
+
+ b.Property("Url")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("Url");
+
+ b.Property("UserId")
+ .HasColumnType("uuid")
+ .HasColumnName("UserId");
+
+ b.Property("UserName")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("UserName");
+
+ b.HasKey("Id");
+
+ b.HasIndex("TenantId", "ExecutionTime");
+
+ b.HasIndex("TenantId", "UserId", "ExecutionTime");
+
+ b.ToTable("AbpAuditLogs", (string)null);
+ });
+
+ modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("AuditLogId")
+ .HasColumnType("uuid")
+ .HasColumnName("AuditLogId");
+
+ b.Property("ExecutionDuration")
+ .HasColumnType("integer")
+ .HasColumnName("ExecutionDuration");
+
+ b.Property("ExecutionTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("ExecutionTime");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("MethodName")
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)")
+ .HasColumnName("MethodName");
+
+ b.Property("Parameters")
+ .HasMaxLength(2000)
+ .HasColumnType("character varying(2000)")
+ .HasColumnName("Parameters");
+
+ b.Property("ServiceName")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("ServiceName");
+
+ b.Property("TenantId")
+ .HasColumnType("uuid")
+ .HasColumnName("TenantId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AuditLogId");
+
+ b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime");
+
+ b.ToTable("AbpAuditLogActions", (string)null);
+ });
+
+ modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogExcelFile", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uuid")
+ .HasColumnName("CreatorId");
+
+ b.Property("FileName")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("FileName");
+
+ b.Property("TenantId")
+ .HasColumnType("uuid")
+ .HasColumnName("TenantId");
+
+ b.HasKey("Id");
+
+ b.ToTable("AbpAuditLogExcelFiles", (string)null);
+ });
+
+ modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("AuditLogId")
+ .HasColumnType("uuid")
+ .HasColumnName("AuditLogId");
+
+ b.Property("ChangeTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("ChangeTime");
+
+ b.Property("ChangeType")
+ .HasColumnType("smallint")
+ .HasColumnName("ChangeType");
+
+ b.Property("EntityId")
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)")
+ .HasColumnName("EntityId");
+
+ b.Property("EntityTenantId")
+ .HasColumnType("uuid");
+
+ b.Property("EntityTypeFullName")
+ .IsRequired()
+ .HasMaxLength(512)
+ .HasColumnType("character varying(512)")
+ .HasColumnName("EntityTypeFullName");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("TenantId")
+ .HasColumnType("uuid")
+ .HasColumnName("TenantId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AuditLogId");
+
+ b.HasIndex("TenantId", "EntityTypeFullName", "EntityId");
+
+ b.ToTable("AbpEntityChanges", (string)null);
+ });
+
+ modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("EntityChangeId")
+ .HasColumnType("uuid");
+
+ b.Property("NewValue")
+ .HasMaxLength(512)
+ .HasColumnType("character varying(512)")
+ .HasColumnName("NewValue");
+
+ b.Property("OriginalValue")
+ .HasMaxLength(512)
+ .HasColumnType("character varying(512)")
+ .HasColumnName("OriginalValue");
+
+ b.Property("PropertyName")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)")
+ .HasColumnName("PropertyName");
+
+ b.Property("PropertyTypeFullName")
+ .IsRequired()
+ .HasMaxLength(512)
+ .HasColumnType("character varying(512)")
+ .HasColumnName("PropertyTypeFullName");
+
+ b.Property("TenantId")
+ .HasColumnType("uuid")
+ .HasColumnName("TenantId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("EntityChangeId");
+
+ b.ToTable("AbpEntityPropertyChanges", (string)null);
+ });
+
+ modelBuilder.Entity("Volo.Abp.BackgroundJobs.BackgroundJobRecord", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ApplicationName")
+ .HasMaxLength(96)
+ .HasColumnType("character varying(96)");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("CreationTime");
+
+ b.Property("ExtraProperties")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("IsAbandoned")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("boolean")
+ .HasDefaultValue(false);
+
+ b.Property("JobArgs")
+ .IsRequired()
+ .HasMaxLength(1048576)
+ .HasColumnType("character varying(1048576)");
+
+ b.Property("JobName")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)");
+
+ b.Property("LastTryTime")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("NextTryTime")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("Priority")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("smallint")
+ .HasDefaultValue((byte)15);
+
+ b.Property("TryCount")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("smallint")
+ .HasDefaultValue((short)0);
+
+ b.HasKey("Id");
+
+ b.HasIndex("IsAbandoned", "NextTryTime");
+
+ b.ToTable("AbpBackgroundJobs", (string)null);
+ });
+
+ modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlob", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("ContainerId")
+ .HasColumnType("uuid");
+
+ b.Property("Content")
+ .HasMaxLength(2147483647)
+ .HasColumnType("bytea");
+
+ b.Property("ExtraProperties")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("TenantId")
+ .HasColumnType("uuid")
+ .HasColumnName("TenantId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ContainerId");
+
+ b.HasIndex("TenantId", "ContainerId", "Name");
+
+ b.ToTable("AbpBlobs", (string)null);
+ });
+
+ modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlobContainer", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("ExtraProperties")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)");
+
+ b.Property("TenantId")
+ .HasColumnType("uuid")
+ .HasColumnName("TenantId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("TenantId", "Name");
+
+ b.ToTable("AbpBlobContainers", (string)null);
+ });
+
+ modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("CreationTime");
+
+ b.Property("Description")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("ExtraProperties")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("IsStatic")
+ .HasColumnType("boolean");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("Regex")
+ .HasMaxLength(512)
+ .HasColumnType("character varying(512)");
+
+ b.Property("RegexDescription")
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)");
+
+ b.Property("Required")
+ .HasColumnType("boolean");
+
+ b.Property("ValueType")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.ToTable("AbpClaimTypes", (string)null);
+ });
+
+ modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid");
+
+ b.Property("SourceTenantId")
+ .HasColumnType("uuid");
+
+ b.Property("SourceUserId")
+ .HasColumnType("uuid");
+
+ b.Property("TargetTenantId")
+ .HasColumnType("uuid");
+
+ b.Property("TargetUserId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId")
+ .IsUnique();
+
+ b.ToTable("AbpLinkUsers", (string)null);
+ });
+
+ modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("CreationTime");
+
+ b.Property("EntityVersion")
+ .HasColumnType("integer");
+
+ b.Property("ExtraProperties")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("IsDefault")
+ .HasColumnType("boolean")
+ .HasColumnName("IsDefault");
+
+ b.Property("IsPublic")
+ .HasColumnType("boolean")
+ .HasColumnName("IsPublic");
+
+ b.Property("IsStatic")
+ .HasColumnType("boolean")
+ .HasColumnName("IsStatic");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("NormalizedName")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("TenantId")
+ .HasColumnType("uuid")
+ .HasColumnName("TenantId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedName");
+
+ b.ToTable("AbpRoles", (string)null);
+ });
+
+ modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid");
+
+ b.Property("ClaimType")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("ClaimValue")
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)");
+
+ b.Property("RoleId")
+ .HasColumnType("uuid");
+
+ b.Property("TenantId")
+ .HasColumnType("uuid")
+ .HasColumnName("TenantId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AbpRoleClaims", (string)null);
+ });
+
+ modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid");
+
+ b.Property("Action")
+ .HasMaxLength(96)
+ .HasColumnType("character varying(96)");
+
+ b.Property("ApplicationName")
+ .HasMaxLength(96)
+ .HasColumnType("character varying(96)");
+
+ b.Property("BrowserInfo")
+ .HasMaxLength(512)
+ .HasColumnType("character varying(512)");
+
+ b.Property("ClientId")
+ .HasMaxLength(64)
+ .HasColumnType("character varying(64)");
+
+ b.Property("ClientIpAddress")
+ .HasMaxLength(64)
+ .HasColumnType("character varying(64)");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CorrelationId")
+ .HasMaxLength(64)
+ .HasColumnType("character varying(64)");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ExtraProperties")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("Identity")
+ .HasMaxLength(96)
+ .HasColumnType("character varying(96)");
+
+ b.Property("TenantId")
+ .HasColumnType("uuid")
+ .HasColumnName("TenantId");
+
+ b.Property("TenantName")
+ .HasMaxLength(64)
+ .HasColumnType("character varying(64)");
+
+ b.Property("UserId")
+ .HasColumnType("uuid");
+
+ b.Property("UserName")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("TenantId", "Action");
+
+ b.HasIndex("TenantId", "ApplicationName");
+
+ b.HasIndex("TenantId", "Identity");
+
+ b.HasIndex("TenantId", "UserId");
+
+ b.ToTable("AbpSecurityLogs", (string)null);
+ });
+
+ modelBuilder.Entity("Volo.Abp.Identity.IdentitySession", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid");
+
+ b.Property("ClientId")
+ .HasMaxLength(64)
+ .HasColumnType("character varying(64)");
+
+ b.Property("Device")
+ .IsRequired()
+ .HasMaxLength(64)
+ .HasColumnType("character varying(64)");
+
+ b.Property("DeviceInfo")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("IpAddresses")
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)");
+
+ b.Property("LastAccessed")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("SessionId")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)");
+
+ b.Property("SignedIn")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("TenantId")
+ .HasColumnType("uuid")
+ .HasColumnName("TenantId");
+
+ b.Property("UserId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Device");
+
+ b.HasIndex("SessionId");
+
+ b.HasIndex("TenantId", "UserId");
+
+ b.ToTable("AbpSessions", (string)null);
+ });
+
+ modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid");
+
+ b.Property("AccessFailedCount")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValue(0)
+ .HasColumnName("AccessFailedCount");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uuid")
+ .HasColumnName("CreatorId");
+
+ b.Property("DeleterId")
+ .HasColumnType("uuid")
+ .HasColumnName("DeleterId");
+
+ b.Property("DeletionTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("DeletionTime");
+
+ b.Property("Email")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)")
+ .HasColumnName("Email");
+
+ b.Property("EmailConfirmed")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("boolean")
+ .HasDefaultValue(false)
+ .HasColumnName("EmailConfirmed");
+
+ b.Property("EntityVersion")
+ .HasColumnType("integer");
+
+ b.Property("ExtraProperties")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("IsActive")
+ .HasColumnType("boolean")
+ .HasColumnName("IsActive");
+
+ b.Property("IsDeleted")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("boolean")
+ .HasDefaultValue(false)
+ .HasColumnName("IsDeleted");
+
+ b.Property("IsExternal")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("boolean")
+ .HasDefaultValue(false)
+ .HasColumnName("IsExternal");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uuid")
+ .HasColumnName("LastModifierId");
+
+ b.Property("LastPasswordChangeTime")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("LastSignInTime")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Leaved")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("boolean")
+ .HasDefaultValue(false)
+ .HasColumnName("Leaved");
+
+ b.Property("LockoutEnabled")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("boolean")
+ .HasDefaultValue(false)
+ .HasColumnName("LockoutEnabled");
+
+ b.Property("LockoutEnd")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Name")
+ .HasMaxLength(64)
+ .HasColumnType("character varying(64)")
+ .HasColumnName("Name");
+
+ b.Property