Skip to content

LuanZwang/ecommerce

Repository files navigation

🛒 Ecommerce

🚀 Pré-requisitos

  • O projeto utiliza .NET 8 e C# 13.
  • Certifique-se de ter o .NET SDK 8 instalado (dotnet --version).
  • (Opcional para Functions) Instale o Azure Functions Core Tools se desejar executar via func.
  • Tenha acesso a uma instância do SQL Server (local ou remota) e uma connection string válida.

🧩 Executando a API (ASP.NET Core)

O repositório pode conter dois projetos que atuam como host da API.
O recomendado para execução local é o Ecommerce.AppHost (se existir) ou, alternativamente, o src/Ecommerce.Api.

1️⃣ Configure a connection string

A API lê a connection string do nome ConnectionStrings:sql.

Exemplo de appsettings.Development.json (ou variável de ambiente):

{
  "ConnectionStrings": {
    "sql": "Server=localhost;Database=EcommerceDb;User Id=sa;Password=YourPassword;TrustServerCertificate=True;"
  }
}

Você também pode definir a variável de ambiente:

  • Windows:
    setx ConnectionStrings__sql "Server=localhost;Database=EcommerceDb;User Id=sa;Password=YourPassword;TrustServerCertificate=True;"

  • Linux/macOS:
    export ConnectionStrings__sql="Server=localhost;Database=EcommerceDb;User Id=sa;Password=YourPassword;TrustServerCertificate=True;"


2️⃣ Build e execução

  • Restaurar e compilar:

    dotnet build
  • Executar o host da API (usando Ecommerce.AppHost):

    dotnet run --project src/Ecommerce.AppHost/Ecommerce.AppHost.csproj
  • Ou, caso não exista o AppHost, execute diretamente a API:

    dotnet run --project src/Ecommerce.Api/Ecommerce.Api.csproj

3️⃣ Observações

  • O projeto de infraestrutura (Ecommerce.Infrastructure) possui um serviço hospedado que tenta executar as migrações automaticamente no startup (veja RunMigrations()).
  • Caso prefira controlar as migrações manualmente, utilize o comando dotnet ef apontando para o projeto de infraestrutura como destino das migrations.

⚙️ Executando o projeto Azure Functions (Functions Worker)

O projeto Functions utiliza o modelo Worker (isolated) e lê a connection string a partir da chave SqlConnectionString

(observe que é diferente do nome usado pela API).

1️⃣ Configure o arquivo local.settings.json

Na pasta src/Ecommerce.Functions, crie um arquivo local.settings.json (não versionar) com o seguinte conteúdo de exemplo:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
    "SqlConnectionString": "Server=localhost;Database=EcommerceDb;User Id=sa;Password=YourPassword;TrustServerCertificate=True;"
  }
}

2️⃣ Build

Na raiz do repositório:

dotnet build

3️⃣ Execução

  • Usando dotnet run:

    dotnet run --project src/Ecommerce.Functions/Ecommerce.Functions.csproj
  • Ou com o Azure Functions Core Tools (recomendado para desenvolvimento local com host UI):

    func start --project src/Ecommerce.Functions

4️⃣ Endpoints e OpenAPI

  • O projeto Functions está configurado com OpenAPI e middleware de tratamento global.
  • Ao executar localmente com func, o endpoint do Swagger/OpenAPI pode ser exposto conforme a configuração do projeto.

🗄️ Migrações de banco de dados

O projeto de infraestrutura contém o EcommerceDbContext e as migrations (se já geradas).
Para aplicar manualmente:

dotnet ef database update --project src/Ecommerce.Infrastructure --startup-project src/Ecommerce.AppHost/Ecommerce.AppHost.csproj

Ajuste o parâmetro --startup-project conforme o host utilizado localmente.


🧪 Testes

Para executar todos os testes do repositório:

dotnet test

💡 Observações e dicas

  • A API (Controllers) espera a connection string em ConnectionStrings:sql.
  • O Functions Worker espera a chave SqlConnectionString no local.settings.json (ou em variáveis de ambiente). Veja src/Ecommerce.Functions/Program.cs.
  • As Functions utilizam o cabeçalho Accept-Language e um serviço de internacionalização para mensagens de erro localizadas.

🔧 Recursos adicionais (opcionais)

Se desejar, posso adicionar:

  • Um exemplo de local.settings.json pré-preenchido na pasta examples/.
  • Um docker-compose.yml para subir um SQL Server local para desenvolvimento.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors