@driveup/schema
v0.2.6
Published
Driveup Entity Schema
Readme
@driveup/schema
TypeORM entity schemas for the Driveup platform ecosystem.
Overview
@driveup/schema provides TypeORM entity definitions and database schemas used across the Driveup platform. This package centralizes all database entity definitions to ensure consistency across microservices and applications.
Features
- 📦 TypeORM Entities - Complete database entity definitions with decorators
- 🔄 Model Transformations - Convert between entities and domain models
- 📊 Relationship Mappings - Pre-configured entity relationships
- 🛡️ Type Safety - Full TypeScript support with type definitions
- 🏗️ Trackable Entities - Base entities with audit fields (created/updated by/on)
Installation
npm install @driveup/schemaPeer Dependencies
This package requires the following peer dependencies:
npm install typeorm reflect-metadata @driveup/common nestjs-i18nUsage
Basic Entity Import
import { CompanyEntity, UserEntity } from '@driveup/schema';
// Use in your repository
const company = await CompanyEntity.findOne({ where: { id: 1 } });Converting Entities to Models
import { CompanyBillEntity } from '@driveup/schema';
const billEntity = await CompanyBillEntity.findOne({
where: { id: 1 }
});
// Convert to domain model
const billModel = billEntity.toModel();Working with Relationships
import { CompanyBillEntity } from '@driveup/schema';
const bill = await CompanyBillEntity.findOne({ where: { id: 1 } });
// Access lazy-loaded relationships
const company = await bill.company;
const items = await bill.items;
const transactions = await bill.transactions;Package Structure
src/
├── catalog/ # Catalog entities (products, programs, addons)
├── profile/ # Profile entities (agents, companies, students)
│ ├── agent/
│ ├── company/
│ │ └── finances/ # Billing, transactions, credits
│ └── student/
├── system/ # System entities (settings, configurations)
├── user/ # User entities and authentication
└── utils/ # Utility base classes (TrackableEntity, etc.)Entity Categories
Catalog
- Addon - Additional services and features
- Product - Core product offerings
- Program - Training programs
- PricePlan - Pricing configurations
- Driving/Seed - Driving-related catalogs
Profile
- Agent - Agent profile and commission data
- Company - Company profiles and settings
- Student - Student profiles and progress
- Finances - Bills, transactions, credits
System
- System configurations and settings
User
- User authentication and authorization data
Development
Build
npm run buildThis compiles TypeScript files to the lib/ directory.
Release
npm run releaseThis builds the package and publishes it to the npm registry.
Environment Requirements
- Node.js: >= 22
- TypeScript: Configured for ES2022
- TypeORM: ^0.3.21
Integration
This package is designed to work with:
- NestJS applications
- TypeORM as the ORM layer
- @driveup/common for shared types and utilities
TypeORM Configuration Example
import { DataSource } from 'typeorm';
import * as Entities from '@driveup/schema';
const dataSource = new DataSource({
type: 'postgres',
host: 'localhost',
port: 5432,
username: 'user',
password: 'password',
database: 'driveup',
entities: Object.values(Entities),
synchronize: false,
migrations: ['./migrations/*.ts']
});Versioning
This package follows Semantic Versioning. Any changes must be accompanied by an appropriate version bump:
- MAJOR - Breaking changes to entity structure
- MINOR - New entities or non-breaking additions
- PATCH - Bug fixes and documentation updates
Version strategy is defined and managed by the CTO.
Support & Contact
- Author: Admir Serifi
- Owner: Intelact Solutions Ltd
- Repository: GitHub
License
Private & Proprietary
This is private property of Intelact Solutions Ltd and is licensed only for use within Intelact Solutions products. Unauthorized use, distribution, or reproduction is strictly prohibited.
