Initial commit
This commit is contained in:
70
src/entities/sustainability-tracking.entity.ts
Normal file
70
src/entities/sustainability-tracking.entity.ts
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user