Skip to content

API con prisma y sqlite como método de aprendizaje del ORM

Notifications You must be signed in to change notification settings

git-devtest/blog-api-prisma

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Blog API con Prisma 7

Una API RESTful robusta para un sistema de blogs, construida con Node.js, Express y Prisma ORM (v7). Utiliza SQLite como base de datos por defecto para facilitar el desarrollo local.

🚀 Características

  • Gestión de Usuarios (Bio, Avatar, Roles).
  • Gestión de Posts (Slug automático, Vistas, Categorías, Comentarios).
  • Sistema de Comentarios.
  • Clasificación por Categorías.
  • Paginación y Filtrado en endpoints de listado.
  • Arquitectura escalable con TypeScript.

🛠️ Requisitos Previos

📦 Instalación

  1. Clona el repositorio:

    git clone <url-del-repositorio>
    cd blog-api
  2. Instala las dependencias:

    npm install
  3. Configura las variables de entorno:

    • El archivo .env ya viene preconfigurado con:
      DATABASE_URL="file:./dev.db"
      SERVER_PORT=3000
  4. Ejecuta las migraciones de Prisma y genera el cliente:

    npx prisma migrate dev --name init
    npx prisma generate
  5. (Opcional) Carga datos de prueba:

    npm run seed

🏃 Scripts Disponibles

  • npm run dev: Inicia el servidor en modo desarrollo con tsx watch.
  • npm start: Inicia el servidor en modo producción.
  • npm run build: Compila el proyecto TypeScript a JavaScript.
  • npm run seed: Ejecuta el script de seeding de la base de datos.

🛣️ API Endpoints

Usuarios (/api/users)

  • GET /api/users: Listar todos los usuarios.
  • GET /api/users/:id: Obtener detalles de un usuario específico (incluye sus posts publicados).

Posts (/api/posts)

  • GET /api/posts: Listar posts (soporta query params page, limit, published).
  • GET /api/posts/:slug: Obtener un post por su slug (incrementa el contador de vistas).
  • POST /api/posts: Crear un nuevo post.
  • PUT /api/posts/:id: Actualizar un post existente.
  • DELETE /api/posts/:id: Eliminar un post.

📊 Modelo de Datos

erDiagram
    User ||--o{ Post : "escribe"
    User ||--o{ Comment : "escribe"
    Post ||--o{ Comment : "tiene"
    Post }o--o{ Category : "pertenece"

    User {
        Int id PK
        String email UK
        String password
        String name
        String bio
        String avatar
        Enum role
        DateTime createdAt
    }

    Post {
        Int id PK
        String title
        String slug UK
        String content
        String excerpt
        Boolean published
        Int views
        Int authorId FK
        DateTime createdAt
    }

    Category {
        Int id PK
        String name UK
        String slug UK
    }

    Comment {
        Int id PK
        String content
        Int postId FK
        Int authorId FK
        DateTime createdAt
    }
Loading

📄 Licencia

ISC -prisma

About

API con prisma y sqlite como método de aprendizaje del ORM

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published