Voici une documentation prête à être intégrée dans votre README.md pour décrire le fonctionnement de votre PersonRepository dans un projet Go avec une base de données SQL :
Le fichier api/person_repository.go contient le code de la couche de persistance pour la gestion des entités Person. Il fournit une interface directe avec la base de données PostgreSQL.
database/sql— bibliothèque standard pour les interactions SQLmodels.Person— structure représentant une personne- PostgreSQL — utilisé pour stocker les données
type PersonRepository struct {
db *sql.DB
}func NewPersonRepository(db *sql.DB) *PersonRepositoryCrée un nouveau repository en injectant une connexion SQL active (*sql.DB).
func (r *PersonRepository) Create(person *models.Person) errorInsère une nouvelle personne dans la table persons.
- 🔢 Remplit automatiquement l'
IDdu modèle après insertion. - 🛠️ Paramètres :
*models.Person - 📤 Retourne une erreur en cas d'échec.
func (r *PersonRepository) GetAll() ([]models.Person, error)Récupère toutes les personnes de la base de données.
- 📥 Retourne une liste de
models.Person. - 📤 Retourne une erreur en cas d'échec.
func (r *PersonRepository) GetByID(id int) (*models.Person, error)Récupère une personne selon son ID.
- 🧾 Paramètre :
id int - 📥 Retourne un pointeur vers
models.Person - 📤 Retourne une erreur si aucun résultat ou si échec
func (r *PersonRepository) Update(person *models.Person) errorMet à jour une personne existante selon son ID.
- 🧾 Paramètre :
*models.Person(avec ID rempli) - 📤 Retourne une erreur en cas d'échec
func (r *PersonRepository) Delete(id int) errorSupprime une personne de la base selon son ID.
- 🧾 Paramètre :
id int - 📤 Retourne une erreur en cas d’échec
Votre table PostgreSQL persons devrait avoir la structure suivante :
CREATE TABLE persons (
id SERIAL PRIMARY KEY,
first_name TEXT,
last_name TEXT,
email TEXT,
age INT,
gender TEXT
);repo := api.NewPersonRepository(db)
err := repo.Create(&models.Person{FirstName: "John", LastName: "Doe", Email: "john@example.com", Age: 30, Gender: "M"})Souhaitez-vous aussi que je vous rédige un exemple d'architecture du projet dans le README ?