Backend Architecture Repository Pattern

Data access abstraction, repository pattern.

valec3 1f840a8 1.2 KB Updated

File contents

Backend Architecture Repository Pattern

When to use this skill

  • Abstracting data access
  • Multiple data sources
  • Testability
  • Complex queries

Workflow

  • Create repository interface
  • Implement repository
  • Inject into services
  • Abstract query logic
  • Keep repositories focused

Instructions

Interface

<?php

namespace App\Repositories;

interface UserRepositoryInterface
{
    public function find(int $id): ?User;
    public function findByEmail(string $email): ?User;
    public function save(User $user): User;
}

Implementation

<?php

namespace App\Repositories;

class UserRepository implements UserRepositoryInterface
{
    public function __construct(
        private UserModel $model
    ) {}

    public function find(int $id): ?User
    {
        return $this->model->find($id);
    }

    public function findByEmail(string $email): ?User
    {
        return $this->model->where('email', $email)->first();
    }
}

Resources

  • Abstract data access
  • Easy to mock for testing
  • Switch data sources easily

valec3/Agents.skills.md/tree/main/.agent/skills/backend-architecture-repository-pattern commit 1f840a851e

Frequently asked questions

npx skillmds add valec3/backend-architecture-repository-pattern