Project

General

Profile

PointDTO » History » Revision 3

Revision 2 (Tomislav Pleše, 09/29/2025 06:12 PM) → Revision 3/6 (Tomislav Pleše, 09/29/2025 06:18 PM)

# PointDTO 


 ``` 
 class PointDTO { 
   final String id; 
   // Possible: Root Point, Shard Point - T007 
   // parentShardId != parentPointId 
   final String parentPointId; 
   final List<String>? List<String> pointChildren; 
   // Shard.id - goes into the ShardList if not Root Point - T007-S02 
   // parentShardId != parentPointId 
   final String? parentShardId; 
   // T007[S01, S02, S03..] 
   final List<ShardDTO>? List<ShardDTO> shardsList; 
   final List<ExchangeDTO> exchangesList; 
   final MetadataDTO? metadata; 

   PointDTO({ 
     required this.id, 
     required this.parentPointId, 
     List<String>? pointChildren, 
     this.parentShardId, 
     List<ShardDTO>? shardsList, 
     List<ExchangeDTO>? exchangesList, 
     this.metadata, 
   }) : pointChildren = pointChildren ?? [], 
         shardsList = shardsList ?? [], 
         exchangesList = exchangesList ?? []; 

   PointDTO.empty({ 
     this.id = '', 
     this.parentPointId = '', 
     this.parentShardId, 
     this.metadata, 
   }) : pointChildren = [], 
         shardsList = [], 
         exchangesList = []; 

   factory PointDTO.fromJson(Map<String, dynamic> json) => 
       _$PointDTOFromJson(json); 
   Map<String, dynamic> toJson() => _$PointDTOToJson(this); 

   PointDTO copyWith({ 
     String? id, 
     String? parentPointId, 
     List<String>? pointChildren, 
     String? parentShardId, 
     List<ShardDTO>? shardsList, 
     List<ExchangeDTO>? exchangeList, 
     MetadataDTO? metadata, 
   }) { 
     return PointDTO( 
       id: id ?? this.id, 
       parentPointId: parentPointId ?? this.parentPointId, 
       pointChildren: pointChildren ?? this.pointChildren, 
       parentShardId: parentShardId ?? this.parentShardId, 
       shardsList: shardsList ?? this.shardsList, 
       exchangesList: exchangeList ?? this.exchangesList, 
       metadata: metadata ?? this.metadata, 
     ); 
   } 
 } 

 @JsonSerializable(explicitToJson: true) 
 class ShardDTO { 
   final String shardId; 
   final List<String> shardChildren; 
   final AnchorDTO anchorDTO; 

   ShardDTO({ 
     required this.shardId, 
     required this.shardChildren, 
     required this.anchorDTO, 
   }); 

   factory ShardDTO.fromJson(Map<String, dynamic> json) => 
       _$ShardDTOFromJson(json); 
   Map<String, dynamic> toJson() => _$ShardDTOToJson(this); 


   // TODO TP: add return type -> empty ShardDTO 
   static empty() {} 
 } 

 @JsonSerializable(explicitToJson: true) 
 class AnchorDTO { 
   final int startPosition; 
   final int endPosition; 
   final String selectedText; 

   AnchorDTO({ 
     required this.startPosition, 
     required this.endPosition, 
     required this.selectedText 
   }); 

   factory AnchorDTO.fromJson(Map<String, dynamic> json) => 
       _$AnchorDTOFromJson(json); 
   Map<String, dynamic> toJson() => _$AnchorDTOToJson(this); 
 } 

 @JsonSerializable(explicitToJson: true) 
 class ExchangeDTO { 
   final String exchangeId; 
   final String? exchangeTitle; 
   final PromptDTO prompt; 
   final ResponseDTO? response; 

   ExchangeDTO({ 
     required this.exchangeId, 
     this.exchangeTitle, 
     required this.prompt, 
     this.response 
   }); 

   factory ExchangeDTO.fromJson(Map<String, dynamic> json) => 
       _$ExchangeDTOFromJson(json); 
   Map<String, dynamic> toJson() => _$ExchangeDTOToJson(this); 
 } 

 @JsonSerializable(explicitToJson: true) 
 class PromptDTO { 
   final String model; 
   final PromptMessageDTO promptMessage; 
   final int maxTokens; 

   PromptDTO({ 
     required this.model, 
     required this.promptMessage, 
     required this.maxTokens 
   }); 

   factory PromptDTO.fromJson(Map<String, dynamic> json) => 
       _$PromptDTOFromJson(json); 
   Map<String, dynamic> toJson() => _$PromptDTOToJson(this); 
 } 

 @JsonSerializable() 
 class PromptMessageDTO { 
   final String role; 
   final String content; 

   PromptMessageDTO({ 
     required this.role, 
     required this.content}); 

   factory PromptMessageDTO.fromJson(Map<String, dynamic> json) => 
       _$PromptMessageDTOFromJson(json); 
   Map<String, dynamic> toJson() => _$PromptMessageDTOToJson(this); 
 } 

 @JsonSerializable(explicitToJson: true) 
 class ResponseDTO { 
   final String id; 
   final String object; 
   final int created; 
   final String model; 
   final List<ChoiceDTO> choices; 
   final UsageDTO usage; 
   final String serviceTier; 
   final String? systemFingerprint; 

   ResponseDTO({ 
     required this.id, 
     required this.object, 
     required this.created, 
     required this.model, 
     required this.choices, 
     required this.usage, 
     required this.serviceTier, 
     this.systemFingerprint, 
   }); 

   factory ResponseDTO.fromJson(Map<String, dynamic> json) => 
       _$ResponseDTOFromJson(json); 
   Map<String, dynamic> toJson() => _$ResponseDTOToJson(this); 
 } 

 @JsonSerializable(explicitToJson: true) 
 class ChoiceDTO { 
   final int index; 
   final MessageDTO message; 
   final dynamic logprobs; 
   final String finishReason; 

   ChoiceDTO({ 
     required this.index, 
     required this.message, 
     this.logprobs, 
     required this.finishReason 
   }); 

   factory ChoiceDTO.fromJson(Map<String, dynamic> json) => 
       _$ChoiceDTOFromJson(json); 
   Map<String, dynamic> toJson() => _$ChoiceDTOToJson(this); 
 } 

 @JsonSerializable(explicitToJson: true) 
 class MessageDTO { 
   final String role; 
   final String content; 
   final String? refusal; 

   MessageDTO({ 
     required this.role, 
     required this.content, 
     this.refusal 
   }); 

   factory MessageDTO.fromJson(Map<String, dynamic> json) => 
       _$MessageDTOFromJson(json); 
   Map<String, dynamic> toJson() => _$MessageDTOToJson(this); 
 } 

 @JsonSerializable(explicitToJson: true) 
 class UsageDTO { 
   final int promptTokens; 
   final int completionTokens; 
   final int totalTokens; 
   final PromptTokensDetailsDTO promptTokensDetails; 
   final CompletionTokensDetailsDTO completionTokensDetails; 

   UsageDTO({ 
     required this.promptTokens, 
     required this.completionTokens, 
     required this.totalTokens, 
     required this.promptTokensDetails, 
     required this.completionTokensDetails, 
   }); 

   factory UsageDTO.fromJson(Map<String, dynamic> json) => 
       _$UsageDTOFromJson(json); 
   Map<String, dynamic> toJson() => _$UsageDTOToJson(this); 
 } 

 @JsonSerializable() 
 class PromptTokensDetailsDTO { 
   final int cachedTokens; 
   final int audioTokens; 

   PromptTokensDetailsDTO({ 
     required this.cachedTokens, 
     required this.audioTokens 
   }); 

   factory PromptTokensDetailsDTO.fromJson(Map<String, dynamic> json) => 
       _$PromptTokensDetailsDTOFromJson(json); 
   Map<String, dynamic> toJson() => _$PromptTokensDetailsDTOToJson(this); 
 } 

 @JsonSerializable() 
 class CompletionTokensDetailsDTO { 
   final int reasoningTokens; 
   final int audioTokens; 
   final int acceptedPredictionTokens; 
   final int rejectedPredictionTokens; 

   CompletionTokensDetailsDTO({ 
     required this.reasoningTokens, 
     required this.audioTokens, 
     required this.acceptedPredictionTokens, 
     required this.rejectedPredictionTokens, 
   }); 

   factory CompletionTokensDetailsDTO.fromJson(Map<String, dynamic> json) => 
       _$CompletionTokensDetailsDTOFromJson(json); 
   Map<String, dynamic> toJson() => _$CompletionTokensDetailsDTOToJson(this); 
 } 

 @JsonSerializable(explicitToJson: true) 
 class MetadataDTO { 
   final bool openState; 

   @JsonKey(fromJson: _parseDateTime, toJson: _formatDateTime) 
   final DateTime created; 


   // TODO TP: this should be a list of modification times 
   @JsonKey(fromJson: _parseDateTime, toJson: _formatDateTime) 
   final DateTime modified; 
   

   final int modifiedCount; 

   @JsonKey(fromJson: _parseDateTime, toJson: _formatDateTime) 
   final DateTime lastAccessed; 
   

   final int hotness; 

   // TODO TP: add hash of the Point object - to compare if there were changes 

   MetadataDTO({ 
     required this.openState, 
     required this.created, 
     required this.modified, 
     required this.modifiedCount, 
     required this.lastAccessed, 
     required this.hotness, 
   }); 

   static DateTime _parseDateTime(String dateString) { 
     return DateTime.parse(dateString); 
   } 

   static String _formatDateTime(DateTime date) { 
     return date.toIso8601String(); 
   } 

   factory MetadataDTO.fromJson(Map<String, dynamic> json) => 
       _$MetadataDTOFromJson(json); 
   Map<String, dynamic> toJson() => _$MetadataDTOToJson(this); 
 } 

 
 ```