Skip to content

Adding Microservice

🎬 Adding Microservice – ShoppingBasket

The Shopping Basket Service will be responsible for managing the list of events that users can view and search.

🧱 1. Responsibilities of EventCatalogService

Feature Description

⚙️ 2. Tech Stack

Layer Tech
Language C# (.NET 9)
Framework ASP.NET Core Web API
DB SQL Server
API Docs Swagger /Scalar / http / OpenAPI
Container Docker
ORM EF Core

DatabasePerService

DoNotShareDatabase

🛠️ 3. Core Models (Example)

 public class Event
 {
     public Guid EventId { get; set; }
     public string Name { get; set; }
     public DateTime Date { get; set; }
 }

    public class BasketLine
    {
        public Guid BasketLineId { get; set; }

        [Required]
        public Guid BasketId { get; set; }

        [Required]
        public Guid EventId { get; set; }
        public Event Event { get; set; }

        [Required]
        public int TicketAmount { get; set; }

        [Required]
        public int Price { get; set; }

        public Basket Basket { get; set; }
    }

      public class Basket
  {
      public Guid BasketId { get; set; }

      [Required]
      public Guid UserId { get; set; }

      public Collection<BasketLine> BasketLines { get; set; }
  }

🔗 4. API Endpoints (OpenAPI Spec)

Method Endpoint Description

BasketLines

GET /api/baskets/{basketId}/basketlines POST /api/baskets/{basketId}/basketlines GET /api/baskets/{basketId}/basketlines/{basketLineId} PUT /api/baskets/{basketId}/basketlines/{basketLineId} DELETE /api/baskets/{basketId}/basketlines/{basketLineId}

Baskets

GET /api/baskets/{basketId} POST /api/baskets

🛠️ Creating the ShoppingBasket Solution

🧱 2. Create the Shopping Basket Web API Project

dotnet new webapi -n EvenTicket.Services.ShoppingBasket --use-controllers -o src/EvenTicket.Services.ShoppingBasket
dotnet sln add src/EvenTicket.Services.ShoppingBasket/EvenTicket.Services.ShoppingBasket.csproj
dotnet sln list

alt text

Here we have to pass unnecessary property which events service can be converted into graphql