|
|
@@ -36,6 +36,24 @@ export type PlaceType = 'place' | 'studio'
|
|
|
/** Статус места: черновик, на модерации, опубликовано, отклонено, на доработке или в архиве */
|
|
|
export type PlaceStatus = 'draft' | 'pending_moderation' | 'published' | 'rejected' | 'revision' | 'archived'
|
|
|
|
|
|
+/**
|
|
|
+ * Изображение места
|
|
|
+ * @property id - Уникальный идентификатор
|
|
|
+ * @property place_id - Идентификатор места
|
|
|
+ * @property url - URL изображения
|
|
|
+ * @property alt - Альтернативный текст (опционально)
|
|
|
+ * @property sort_order - Порядок сортировки
|
|
|
+ * @property is_cover - Является ли обложкой
|
|
|
+ */
|
|
|
+export interface PlaceImage {
|
|
|
+ id: string
|
|
|
+ place_id: string
|
|
|
+ url: string
|
|
|
+ alt?: string
|
|
|
+ sort_order: number
|
|
|
+ is_cover: boolean
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* Место или студия для фотосъёмок
|
|
|
* @property id - Уникальный идентификатор
|
|
|
@@ -46,7 +64,7 @@ export type PlaceStatus = 'draft' | 'pending_moderation' | 'published' | 'reject
|
|
|
* @property lat - Широта
|
|
|
* @property lng - Долгота
|
|
|
* @property cover_image - URL обложки (опционально)
|
|
|
- * @property images - Массив URL изображений
|
|
|
+ * @property images - Массив изображений
|
|
|
* @property access_info - Информация о доступе (опционально)
|
|
|
* @property rating - Рейтинг
|
|
|
* @property reviews_count - Количество отзывов
|
|
|
@@ -54,11 +72,9 @@ export type PlaceStatus = 'draft' | 'pending_moderation' | 'published' | 'reject
|
|
|
* @property features - Список характеристик
|
|
|
* @property status - Статус публикации
|
|
|
* @property owner - Владелец (id, name, avatar_url)
|
|
|
- * @property pricing - Ценообразование для студий (опционально)
|
|
|
* @property booking_url - Ссылка на бронирование (опционально)
|
|
|
- * @property executor_services - Услуги исполнителей (опционально)
|
|
|
* @property created_at - Дата создания
|
|
|
- * @property updated_at - Дата обновления (опционально)
|
|
|
+ * @property updated_at - Дата обновления
|
|
|
*/
|
|
|
export interface Place {
|
|
|
id: string
|
|
|
@@ -69,7 +85,7 @@ export interface Place {
|
|
|
lat: number
|
|
|
lng: number
|
|
|
cover_image?: string
|
|
|
- images: string[]
|
|
|
+ images: PlaceImage[]
|
|
|
access_info?: string
|
|
|
rating: number
|
|
|
reviews_count: number
|
|
|
@@ -82,27 +98,24 @@ export interface Place {
|
|
|
currency?: string
|
|
|
min_hours?: number
|
|
|
booking_url?: string
|
|
|
- executor_services?: ExecutorService[]
|
|
|
created_at: string
|
|
|
- updated_at?: string
|
|
|
+ updated_at: string
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Услуга, предоставляемая исполнителем на месте съёмки
|
|
|
+ * Изображение из портфолио услуги
|
|
|
* @property id - Уникальный идентификатор
|
|
|
- * @property title - Название услуги
|
|
|
- * @property price - Стоимость
|
|
|
- * @property currency - Валюта
|
|
|
- * @property duration_minutes - Длительность в минутах (опционально)
|
|
|
- * @property executor_name - Имя исполнителя
|
|
|
+ * @property service_id - Идентификатор услуги
|
|
|
+ * @property url - URL изображения
|
|
|
+ * @property alt - Альтернативный текст (опционально)
|
|
|
+ * @property sort_order - Порядок сортировки
|
|
|
*/
|
|
|
-export interface ExecutorService {
|
|
|
+export interface ServiceImage {
|
|
|
id: string
|
|
|
- title: string
|
|
|
- price: number
|
|
|
- currency: string
|
|
|
- duration_minutes?: number
|
|
|
- executor_name: string
|
|
|
+ service_id: string
|
|
|
+ url: string
|
|
|
+ alt?: string
|
|
|
+ sort_order: number
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -158,7 +171,7 @@ export interface Service {
|
|
|
tags: Tag[]
|
|
|
rating: number
|
|
|
reviews_count: number
|
|
|
- portfolio_images: string[]
|
|
|
+ portfolio_images: ServiceImage[]
|
|
|
status: 'draft' | 'published' | 'archived'
|
|
|
created_at: string
|
|
|
}
|
|
|
@@ -173,10 +186,14 @@ export interface Service {
|
|
|
*/
|
|
|
export interface Review {
|
|
|
id: string
|
|
|
+ user_id: string
|
|
|
+ target_type: 'place' | 'service'
|
|
|
+ target_id: string
|
|
|
user: Pick<User, 'id' | 'name' | 'avatar_url'>
|
|
|
rating: number
|
|
|
text?: string
|
|
|
created_at: string
|
|
|
+ updated_at: string
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -193,6 +210,7 @@ export interface Review {
|
|
|
export interface Booking {
|
|
|
id: string
|
|
|
place_id: string
|
|
|
+ user_id: string
|
|
|
start_time: string
|
|
|
end_time: string
|
|
|
status: 'pending' | 'confirmed' | 'cancelled' | 'completed'
|