0.0.2 • Published 5 months ago

nodajpa v0.0.2

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

🚀 NodaJPA - Un ORM inspiré de JPA pour Node.js

NodaJPA est une implémentation inspirée de JPA en Java, permettant une gestion fluide et intuitive des bases de données relationnelles avec Node.js.

🎯 Fonctionnalités

Mapping des entités comme en JPA\ ✅ Requêtes simplifiées avec un Entity Manager\ ✅ Support multi-base de données (PostgreSQL)\ ✅ TypeScript supporté\ ✅ Gestion des migrations


📦 Installation

npm install nodajpa

📌 Configuration de la base de données

Après l'installation, configurez votre environnement .env dans votre projet avec les informations suivantes :

NODAJPA_HOST=localhost
NODAJPA_PORT=5432
NODAJPA_USER=postgres
NODAJPA_PASSWORD=pass
NODAJPA_NAME=test_nodajpa

⚠️ Actuellement, NodaJPA ne supporte que PostgreSQL. D'autres bases de données seront ajoutées prochainement.


🚀 Utilisation

1️⃣ Définir une entité

import { Column, Entity, ManyToOne, Table } from "nodajpa";


@Table("genre")
class Genre extends Entity{
    @Column({primary_key:true,autoincrement:true})
    id:number;

    @Column()
    nom:string;

    constructor(id:number,nom:string){
        super();
        this.id = id;
        this.nom= nom;
    }
}


@Table('utilisateur')
class User extends Entity {
    @Column({ name: 'id', primary_key: true, autoincrement: true })
    id: number;


    @Column()
    identifiant: string;

    // JoinColumn est le nom de la foreign Key
    // entity est la classe Entity dont la foreign key fait references
    @ManyToOne({joinColumn:"id_genre",entity:Genre})
    genre:Genre;

    @Column()
    password: string;

    constructor(id: number, identifiant: string, password: string,genre:Genre) {
        super();
        this.genre = genre ?? null;
        this.id = id ?? 0;
        this.identifiant = identifiant ?? '';
        this.password = password ?? '';
    }
}

2️⃣ Configurer la connexion

Après l'installation, configurez votre environnement .env dans votre projet avec les informations suivantes :

NODAJPA_HOST=localhost
NODAJPA_PORT=5432
NODAJPA_USER=postgres
NODAJPA_PASSWORD=pass
NODAJPA_NAME=test_nodajpa

⚠️ Actuellement, NodaJPA ne supporte que PostgreSQL. D'autres bases de données seront ajoutées prochainement.

3️⃣ CRUD avec l’Entity Manager

🔍 Récupérer toutes les entrées

const users = await User.getAll();
console.log(users);

Resultat

[
    [class User extends Entity]{
        id: 1,
        identifiant: 'jean',
        password: 'jean1234',
        genre: [class Genre extends Entity] { 
            id: 1, 
            nom: 'm' 
        }
    },
    [class User extends Entity]{
        id: 2,
        identifiant: 'jeanne',
        password: 'jeanne564',
        genre: [class Genre extends Entity] { 
            id: 2, 
            nom: 'f' 
        }
    }
]

🔍 Récupérer une entrée par clé primaire

const user = await User.getByPrimaryKey(1);
console.log(user);

resultat

[class User extends Entity]{
    id: 1,
    identifiant: 'jean',
    password: 'jean1234',
    genre: [class Genre extends Entity] { 
        id: 1, 
        nom: 'm' 
    }
}

🔄 Sauvegarder une nouvelle entrée

const newUser = new User(0, "JohnDoe", "password123");
await newUser.save();

✏️ Mettre à jour une entrée

newUser.password = "newSecurePassword";
await newUser.update();

❌ Supprimer une entrée

await newUser.delete();

🏗️ Exécuter une requête personnalisée

await User.executeQuery("UPDATE utilisateur SET password = $1 WHERE identifiant = $2", "securePass", "JohnDoe");

🏗️ Architecture

📌 Entity Manager - Gestion des entités et des transactions\ 📌 Repositories - CRUD simplifié pour chaque entité\


📜 Roadmap

-

🚧 Le projet est encore en plein développement. De nouvelles fonctionnalités seront ajoutées prochainement ! 🚧


📄 Licence

Ce projet est sous licence MIT.

📌 Auteur : Mamitiana Faneva

📢 Contributions bienvenues ! 🚀

0.0.2

5 months ago

0.0.1

5 months ago