// // Item.swift // ChatMasterMind // // Created by Oleksandr Kozachuk on 2023-06-24. // import Foundation import SwiftData @Model final class ChatPair: Identifiable { let id: UUID var timestamp: Date var question: String var answer: String? var previousVersions: [ChatPair] init(question: String, answer: String? = nil, timestamp: Date = Date(), previousVersions: [ChatPair] = []) { self.id = UUID() self.question = question self.answer = answer self.timestamp = timestamp self.previousVersions = previousVersions } } @Model final class ChatHistory: Identifiable { let id: UUID var name: String var chatPairs: [ChatPair] init(name: String, chatPairs: [ChatPair] = []) { self.id = UUID() self.name = name self.chatPairs = chatPairs } func addChatPair(question: String, answer: String? = nil, timestamp: Date = Date()) { let newPair = ChatPair(question: question, answer: answer, timestamp: timestamp) chatPairs.append(newPair) } func editChatPair(withId id: UUID, question: String? = nil, answer: String? = nil) { guard let index = chatPairs.firstIndex(where: { $0.id == id }) else { return } let newChatPair = chatPairs[index] newChatPair.previousVersions.append(chatPairs[index]) if let question = question { newChatPair.question = question } if let answer = answer { newChatPair.answer = answer } newChatPair.timestamp = Date() chatPairs[index] = newChatPair } }