From 681c55c8f5ef788e9496f8127548b6794e9532d2 Mon Sep 17 00:00:00 2001 From: "vianney.jourdy" Date: Sat, 14 Jun 2025 15:40:41 +0200 Subject: [PATCH] add entities and DTO --- .dockerignore | 25 ++++++++++++++++++++++ OptifitWebServices.sln | 7 ++++++ UserService/Dockerfile | 21 ++++++++++++++++++ UserService/Entities/User.cs | 23 ++++++++++++++++++++ UserService/Program.cs | 7 ++++++ UserService/Properties/launchSettings.json | 12 +++++++++++ UserService/UserService.csproj | 24 +++++++++++++++++++++ UserService/Worker.cs | 24 +++++++++++++++++++++ docker-compose.yml | 7 +++++- src/Shared/DTOs/UserDto.cs | 7 ++++++ src/Shared/Enum/EGoal.cs | 11 ++++++++++ src/Shared/Enum/EHealthProblem.cs | 10 +++++++++ src/Shared/Enum/ESleepLevel.cs | 11 ++++++++++ src/Shared/Enum/ESport.cs | 15 +++++++++++++ src/Shared/Enum/ESportLevel.cs | 10 +++++++++ 15 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 .dockerignore create mode 100644 UserService/Dockerfile create mode 100644 UserService/Entities/User.cs create mode 100644 UserService/Program.cs create mode 100644 UserService/Properties/launchSettings.json create mode 100644 UserService/UserService.csproj create mode 100644 UserService/Worker.cs create mode 100644 src/Shared/DTOs/UserDto.cs create mode 100644 src/Shared/Enum/EGoal.cs create mode 100644 src/Shared/Enum/EHealthProblem.cs create mode 100644 src/Shared/Enum/ESleepLevel.cs create mode 100644 src/Shared/Enum/ESport.cs create mode 100644 src/Shared/Enum/ESportLevel.cs diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..cd967fc --- /dev/null +++ b/.dockerignore @@ -0,0 +1,25 @@ +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/.idea +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/bin +**/charts +**/docker-compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md \ No newline at end of file diff --git a/OptifitWebServices.sln b/OptifitWebServices.sln index e0fc7d6..e5dcd9f 100644 --- a/OptifitWebServices.sln +++ b/OptifitWebServices.sln @@ -9,6 +9,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CatalogService", "src\Catal EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared", "src\Shared\Shared.csproj", "{BF49B348-4188-4AC7-9ED4-5837F4B3BCD2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UserService", "UserService\UserService.csproj", "{460A1582-80AD-46DD-A2BF-77A882653B90}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -26,9 +28,14 @@ Global {BF49B348-4188-4AC7-9ED4-5837F4B3BCD2}.Debug|Any CPU.Build.0 = Debug|Any CPU {BF49B348-4188-4AC7-9ED4-5837F4B3BCD2}.Release|Any CPU.ActiveCfg = Release|Any CPU {BF49B348-4188-4AC7-9ED4-5837F4B3BCD2}.Release|Any CPU.Build.0 = Release|Any CPU + {460A1582-80AD-46DD-A2BF-77A882653B90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {460A1582-80AD-46DD-A2BF-77A882653B90}.Debug|Any CPU.Build.0 = Debug|Any CPU + {460A1582-80AD-46DD-A2BF-77A882653B90}.Release|Any CPU.ActiveCfg = Release|Any CPU + {460A1582-80AD-46DD-A2BF-77A882653B90}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {54BE8DE8-08BD-429F-BCCA-3363A879D922} = {2A7200CA-F40B-4715-8726-4ED30C785FA4} {BF49B348-4188-4AC7-9ED4-5837F4B3BCD2} = {2A7200CA-F40B-4715-8726-4ED30C785FA4} + {460A1582-80AD-46DD-A2BF-77A882653B90} = {2A7200CA-F40B-4715-8726-4ED30C785FA4} EndGlobalSection EndGlobal diff --git a/UserService/Dockerfile b/UserService/Dockerfile new file mode 100644 index 0000000..9b70717 --- /dev/null +++ b/UserService/Dockerfile @@ -0,0 +1,21 @@ +FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base +USER $APP_UID +WORKDIR /app + +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +ARG BUILD_CONFIGURATION=Release +WORKDIR /src +COPY ["UserService/UserService.csproj", "UserService/"] +RUN dotnet restore "UserService/UserService.csproj" +COPY . . +WORKDIR "/src/UserService" +RUN dotnet build "UserService.csproj" -c $BUILD_CONFIGURATION -o /app/build + +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +RUN dotnet publish "UserService.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "UserService.dll"] diff --git a/UserService/Entities/User.cs b/UserService/Entities/User.cs new file mode 100644 index 0000000..c9c9dd7 --- /dev/null +++ b/UserService/Entities/User.cs @@ -0,0 +1,23 @@ +namespace UserService.Entities; + +public class User +{ + public Guid Id { get; set; } + public string Name { get; set; } = "Gest"; + public string Surname { get; set; } = "Gest"; + public int Age { get; set; } = 0; + public float Weight { get; set; } = 0.0f; + public float Height { get; set; } = 0.0f; + public bool Sexe { get; set; } = true; + public string ProfilePict { get; set; } = "https://cdn.pixabay.com/photo/2015/10/05/22/37/blank-profile-picture-973460_960_720.png"; + + public int NbSessionWeek { get; set; } = 1; + public string Goal { get; set; } = null; + public string SleepLevel { get; set; } = null; + public string SportLevel { get; set; } = null; + public string Sports { get; set; } = null; + public string HealthProblems { get; set; } = null; + + public DateTime CreatedAt { get; set; } = DateTime.UtcNow; + public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; +} \ No newline at end of file diff --git a/UserService/Program.cs b/UserService/Program.cs new file mode 100644 index 0000000..90590ff --- /dev/null +++ b/UserService/Program.cs @@ -0,0 +1,7 @@ +using UserService; + +var builder = Host.CreateApplicationBuilder(args); +builder.Services.AddHostedService(); + +var host = builder.Build(); +host.Run(); \ No newline at end of file diff --git a/UserService/Properties/launchSettings.json b/UserService/Properties/launchSettings.json new file mode 100644 index 0000000..17a5af2 --- /dev/null +++ b/UserService/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "profiles": { + "UserService": { + "commandName": "Project", + "dotnetRunMessages": true, + "environmentVariables": { + "DOTNET_ENVIRONMENT": "Development" + } + } + } +} diff --git a/UserService/UserService.csproj b/UserService/UserService.csproj new file mode 100644 index 0000000..a333c8b --- /dev/null +++ b/UserService/UserService.csproj @@ -0,0 +1,24 @@ + + + + net8.0 + enable + enable + dotnet-UserService-2cc009cf-2522-48e6-b2c0-d6f06a3170d3 + Linux + + + + + + + + + .dockerignore + + + + + + + diff --git a/UserService/Worker.cs b/UserService/Worker.cs new file mode 100644 index 0000000..066aa28 --- /dev/null +++ b/UserService/Worker.cs @@ -0,0 +1,24 @@ +namespace UserService; + +public class Worker : BackgroundService +{ + private readonly ILogger _logger; + + public Worker(ILogger logger) + { + _logger = logger; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + if (_logger.IsEnabled(LogLevel.Information)) + { + _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + } + + await Task.Delay(1000, stoppingToken); + } + } +} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 94ed0e8..b9ee682 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,4 +8,9 @@ services: volumes: - pgdata:/var/lib/postgresql/data volumes: - pgdata: \ No newline at end of file + pgdata: + userservice: + image: userservice + build: + context: . + dockerfile: UserService/Dockerfile diff --git a/src/Shared/DTOs/UserDto.cs b/src/Shared/DTOs/UserDto.cs new file mode 100644 index 0000000..ac52cd7 --- /dev/null +++ b/src/Shared/DTOs/UserDto.cs @@ -0,0 +1,7 @@ +namespace Shared.DTOs; + +public class UserDto +{ + public string Name { get; set; }; + +} \ No newline at end of file diff --git a/src/Shared/Enum/EGoal.cs b/src/Shared/Enum/EGoal.cs new file mode 100644 index 0000000..1122b08 --- /dev/null +++ b/src/Shared/Enum/EGoal.cs @@ -0,0 +1,11 @@ +namespace Shared.Enum; + +public enum EGoal +{ + None, + WeightLoss, + MassGain, + Fitness, + ImproveStamina, + KeepFit, +} \ No newline at end of file diff --git a/src/Shared/Enum/EHealthProblem.cs b/src/Shared/Enum/EHealthProblem.cs new file mode 100644 index 0000000..293518f --- /dev/null +++ b/src/Shared/Enum/EHealthProblem.cs @@ -0,0 +1,10 @@ +namespace Shared.Enum; + +public enum EHealthProblem +{ + None, + Arthrosis, + Migraine, + BackPain, + Arthritis, +} \ No newline at end of file diff --git a/src/Shared/Enum/ESleepLevel.cs b/src/Shared/Enum/ESleepLevel.cs new file mode 100644 index 0000000..ef3c642 --- /dev/null +++ b/src/Shared/Enum/ESleepLevel.cs @@ -0,0 +1,11 @@ +namespace Shared.Enum; + +public enum ESleepLevel +{ + None, + Excellent, + Good, + Bad, + VeryBad, + Terrible, +} \ No newline at end of file diff --git a/src/Shared/Enum/ESport.cs b/src/Shared/Enum/ESport.cs new file mode 100644 index 0000000..9674178 --- /dev/null +++ b/src/Shared/Enum/ESport.cs @@ -0,0 +1,15 @@ +namespace Shared.Enum; + +public enum ESport +{ + None, + Football, + Basketball, + Handball, + Tennis, + Walking, + Running, + Biking, + Yoga, + Else, +} \ No newline at end of file diff --git a/src/Shared/Enum/ESportLevel.cs b/src/Shared/Enum/ESportLevel.cs new file mode 100644 index 0000000..27d1448 --- /dev/null +++ b/src/Shared/Enum/ESportLevel.cs @@ -0,0 +1,10 @@ +namespace Shared.Enum; + +public enum ESportLevel +{ + None, + VerySporty, + Sporty, + Beginner, + NotSporty, +} \ No newline at end of file