46 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
import Foundation
 | 
						||
 | 
						||
struct PostIDWrapper: Identifiable {
 | 
						||
    let id: UUID
 | 
						||
}
 | 
						||
 | 
						||
struct Post: Identifiable, Codable {
 | 
						||
    let id: UUID                           // Уникальный идентификатор поста
 | 
						||
    let title: String?                     // Название поста
 | 
						||
    let description: String?               // Описание поста
 | 
						||
    let media: [MediaItem]                 // Массив медиафайлов
 | 
						||
    let mediaOrder: [UUID]?                // Порядок отображения медиа
 | 
						||
    let thumbnailID: UUID?                 // Превью для видео
 | 
						||
    let duration: Double?                  // Длительность видео/аудио
 | 
						||
    let createdAt: Date                    // Дата создания
 | 
						||
    let updatedAt: Date                    // Дата обновления
 | 
						||
    let views: Int                         // Просмотры
 | 
						||
    let likes: Int                         // Лайки
 | 
						||
    let saves: Int                         // В сохранённом
 | 
						||
    let commentsCount: Int                 // Кол-во комментариев
 | 
						||
    let isLikedByCurrentUser: Bool         // Лайк текущим юзером
 | 
						||
    let isSavedByCurrentUser: Bool         // Сохранено текущим юзером
 | 
						||
    let authorID: String                   // Автор
 | 
						||
    let authorUsername: String             // Имя пользователя автора
 | 
						||
    let hashtags: [String]?                // Хэштеги
 | 
						||
    let location: String?                  // Гео
 | 
						||
    let languageCode: [String]?            // Язык
 | 
						||
    let accessLevel: AccessLevel           // Доступ (публичный и т.п.)
 | 
						||
}
 | 
						||
 | 
						||
enum MediaType: String, Codable {
 | 
						||
    case photo
 | 
						||
    case video
 | 
						||
}
 | 
						||
 | 
						||
struct MediaItem: Identifiable, Codable {
 | 
						||
    let id: UUID
 | 
						||
    let type: MediaType
 | 
						||
}
 | 
						||
 | 
						||
enum AccessLevel: String, Codable {
 | 
						||
    case `public`
 | 
						||
    case friends
 | 
						||
    case archive
 | 
						||
}
 |