@davidhuanca/sga-core
v1.0.0
Published
Core package with business logic for SGA (Sistema de Gestión Académica)
Maintainers
Readme
@david-huanca/sga-core
Paquete Core del Sistema de Gestión Académica (SGA). Contiene toda la lógica de negocio, servicios, repositorios, validadores y tipos compartidos.
Instalación
En un Monorepo (Recomendado)
Si estás usando npm workspaces, el paquete ya está disponible:
{
"dependencies": {
"@david-huanca/sga-core": "*"
}
}Como Paquete NPM
npm install @david-huanca/sga-coreDesde Git (Para proyectos externos)
{
"dependencies": {
"@david-huanca/sga-core": "git+https://github.com/david-huanca/sga-nextjs.git#packages/core"
}
}Uso
Importar Servicios
import { UserService, ClassroomService } from "@david-huanca/sga-core";
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
const userService = new UserService(prisma);
const classroomService = new ClassroomService(prisma);
// Usar los servicios
const users = await userService.getAllUsers();
const user = await userService.getUserById(1);Importar Validadores
import { createUserSchema, updateUserSchema } from "@david-huanca/sga-core";
// Validar datos
const validatedData = createUserSchema.parse(userData);Importar Errores
import { NotFoundError, ValidationError } from "@david-huanca/sga-core";
try {
const user = await userService.getUserById(999);
} catch (error) {
if (error instanceof NotFoundError) {
// Manejar error 404
}
}Importar Tipos
import type { ApiResponse, UserWithRelations } from "@david-huanca/sga-core";
const response: ApiResponse<UserWithRelations> = {
success: true,
data: user,
};Estructura
packages/core/
├── src/
│ ├── services/ # Servicios de negocio
│ ├── repositories/ # Repositorios de datos
│ ├── errors/ # Errores personalizados
│ ├── types/ # Tipos compartidos
│ ├── validators/ # Validadores Zod
│ └── index.ts # Exportaciones públicas
├── package.json
└── tsconfig.jsonDesarrollo
Build
npm run buildEsto genera los archivos compilados en dist/.
Desarrollo con Watch
npm run devCompila en modo watch para desarrollo.
Requisitos
- Node.js 18+
- TypeScript 5+
- @prisma/client (peer dependency)
API
UserService
getUserById(id: number): Obtiene un usuario por IDgetAllUsers(): Obtiene todos los usuariosgetUsersByType(userType: UserType): Obtiene usuarios por tipocreateUser(input: CreateUserInput): Crea un nuevo usuarioupdateUser(id: number, input: UpdateUserInput): Actualiza un usuariodeleteUser(id: number): Elimina un usuario
ClassroomService
getClassroomById(id: number): Obtiene una clase por IDgetAllClassrooms(): Obtiene todas las clasesgetClassroomsByTeacher(teacherId: number): Obtiene clases por profesorgetClassroomsByStudent(studentId: number): Obtiene clases por estudiantegetClassroomsByProgram(programId: number): Obtiene clases por programacreateClassroom(input: CreateClassroomInput): Crea una nueva claseupdateClassroom(id: number, input: UpdateClassroomInput): Actualiza una clasedeleteClassroom(id: number): Elimina una claseaddStudentToClassroom(classroomId: number, userId: number): Agrega estudianteremoveStudentFromClassroom(classroomId: number, userId: number): Remueve estudianteupdateStudentScore(classroomId: number, userId: number, score: number, comment?: string): Actualiza calificación
Licencia
ISC
