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
|
||
}
|