Initial commit

This commit is contained in:
2025-10-10 21:47:56 -04:00
parent 6e445eb057
commit 6e0ad420ab
227 changed files with 34899 additions and 0 deletions

View File

@@ -0,0 +1,70 @@
import { Entity, Column, ManyToOne, JoinColumn } from 'typeorm';
import { ApiProperty } from '@nestjs/swagger';
import { BaseEntity } from './base.entity';
import { User } from './user.entity';
@Entity({ name: 'sustainability_tracking', schema: 'analytics' })
export class SustainabilityTracking extends BaseEntity {
@ApiProperty({ description: 'User ID' })
@Column({ name: 'user_id' })
userId: string;
@ApiProperty({ description: 'Activity type that generated carbon footprint' })
@Column({ name: 'activity_type', length: 50 })
activityType: string; // transportation, accommodation, dining, activities
@ApiProperty({ description: 'Activity details' })
@Column({ name: 'activity_details', type: 'jsonb' })
activityDetails: {
description: string;
location?: string;
duration?: number;
distance?: number;
participants?: number;
provider?: string;
};
@ApiProperty({ description: 'Carbon footprint in kg CO2' })
@Column({ name: 'carbon_footprint_kg', type: 'decimal', precision: 10, scale: 3 })
carbonFootprintKg: number;
@ApiProperty({ description: 'Water usage in liters' })
@Column({ name: 'water_usage_liters', type: 'decimal', precision: 10, scale: 2, nullable: true })
waterUsageLiters: number;
@ApiProperty({ description: 'Waste generated in kg' })
@Column({ name: 'waste_generated_kg', type: 'decimal', precision: 8, scale: 3, nullable: true })
wasteGeneratedKg: number;
@ApiProperty({ description: 'Energy consumption in kWh' })
@Column({ name: 'energy_consumption_kwh', type: 'decimal', precision: 10, scale: 3, nullable: true })
energyConsumptionKwh: number;
@ApiProperty({ description: 'Sustainability score (0-100)' })
@Column({ name: 'sustainability_score', type: 'decimal', precision: 5, scale: 2 })
sustainabilityScore: number;
@ApiProperty({ description: 'Offset credits purchased' })
@Column({ name: 'offset_credits_kg', type: 'decimal', precision: 10, scale: 3, default: 0 })
offsetCreditsKg: number;
@ApiProperty({ description: 'Cost of offset in USD' })
@Column({ name: 'offset_cost_usd', type: 'decimal', precision: 8, scale: 2, default: 0 })
offsetCostUsd: number;
@ApiProperty({ description: 'Certification or verification data' })
@Column({ name: 'certifications', type: 'jsonb', nullable: true })
certifications: {
ecoFriendly: boolean;
carbonNeutral: boolean;
sustainableTourism: boolean;
localCommunitySupport: boolean;
wildlifeProtection: boolean;
certificationBodies: string[];
};
// Relations
@ManyToOne(() => User)
@JoinColumn({ name: 'user_id' })
user: User;
}