# DataCopy — copies all data from SqlServer into the Postgres target.
# The build context is the repo's src/ folder; see docker-compose.yml next to this file.

FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
WORKDIR /src

# Only the project files first, so a source-only change reuses the restore layer.
# NOTE: the repo's nuget.config declares an empty <packageSources/>, which would leave a
# clean container with no feed at all. It is therefore deliberately not copied before
# restore, so packages come from the default NuGet.org feed.
COPY GreenHome.DataCopy/GreenHome.DataCopy.csproj GreenHome.DataCopy/
COPY GreenHome.Infrastructure/GreenHome.Infrastructure.csproj GreenHome.Infrastructure/
COPY GreenHome.Application/GreenHome.Application.csproj GreenHome.Application/
COPY GreenHome.Domain/GreenHome.Domain.csproj GreenHome.Domain/
COPY GreenHome.Sms.Ippanel/GreenHome.Sms.Ippanel.csproj GreenHome.Sms.Ippanel/
COPY GreenHome.VoiceCall.Avanak/GreenHome.VoiceCall.Avanak.csproj GreenHome.VoiceCall.Avanak/
COPY GreenHome.AI.DeepSeek/GreenHome.AI.DeepSeek.csproj GreenHome.AI.DeepSeek/
RUN dotnet restore GreenHome.DataCopy/GreenHome.DataCopy.csproj \
    --source https://api.nuget.org/v3/index.json

COPY . .
RUN dotnet publish GreenHome.DataCopy/GreenHome.DataCopy.csproj -c Release -o /app --no-restore

# Infrastructure references Microsoft.AspNetCore.App, so the ASP.NET runtime is required.
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime
WORKDIR /app
COPY --from=build /app .

# Extra arguments are appended, e.g. `docker compose run --rm datacopy --reset`.
ENTRYPOINT ["dotnet", "GreenHome.DataCopy.dll"]
