Initial commit

This commit is contained in:
15lu.akari
2025-08-24 14:44:50 +03:00
parent dca1ae410b
commit 5a583d9415
50 changed files with 2019 additions and 17 deletions

View File

@ -0,0 +1,17 @@
import Foundation
struct Article: Decodable, Identifiable, Equatable {
let id: Int
let body: String
let heading: String
let service_name: String?
var isReviewArticle: Bool? = false
init(id: Int, body: String, heading: String, service_name: String? = nil, isReviewArticle: Bool = false) {
self.id = id
self.body = body
self.heading = heading
self.service_name = service_name
self.isReviewArticle = isReviewArticle
}
}

View File

@ -0,0 +1,8 @@
import Foundation
struct ArticleMedia: Decodable, Identifiable {
let id: String
let filename: String
let media_name: String
let media_type: Int
}

View File

@ -0,0 +1,11 @@
struct Route: Decodable, Identifiable {
let id: Int
let routeNumber: String
let routeSysNumber: String
enum CodingKeys: String, CodingKey {
case id
case routeNumber = "route_number"
case routeSysNumber = "route_sys_number"
}
}

View File

@ -0,0 +1,33 @@
import Foundation
struct SightModel: Decodable, Identifiable {
let id: Int
let address: String
let city: String?
let city_id: Int
let latitude: Double
let longitude: Double
let left_article: Int
let name: String
let preview_media: String?
let thumbnail: String
let video_preview: String?
let watermark_lu: String
let watermark_rd: String
var previewMediaURL: URL? {
guard let preview_media = preview_media else { return nil }
return URL(string: preview_media)
}
var videoPreviewURL: URL? {
guard let video_preview = video_preview else { return nil }
return URL(string: video_preview)
}
}
struct SightContent: Decodable {
let name: String
let preview_media: String
let video_preview: String?
}

View File

@ -0,0 +1,6 @@
import Foundation
struct Station: Codable, Identifiable {
var id: Int
var name: String
}

View File

@ -0,0 +1,27 @@
import Foundation
// MARK: - Stop
struct Stop: Identifiable, Codable {
let id: Int
let name: String
}
// MARK: - StopDetail
struct StopDetail: Identifiable, Codable {
let id: Int
let name: String
let transfers: Transfers
}
// MARK: - Transfers
struct Transfers: Codable {
let tram: String?
let trolleybus: String?
let bus: String?
let train: String?
let metroRed: String?
let metroGreen: String?
let metroBlue: String?
let metroPurple: String?
let metroOrange: String?
}

View File

@ -0,0 +1,22 @@
import Foundation
struct WeatherResponse: Codable {
let currentWeather: CurrentWeatherItem?
let forecast: [ForecastItem]
}
struct CurrentWeatherItem: Codable {
let temperatureCelsius: Double
let description: String
let humidity: Int
let windSpeed: Double
}
struct ForecastItem: Codable {
let date: String
let description: String
let humidity: Int
let windSpeed: Double
let minTemperatureCelsius: Double
let maxTemperatureCelsius: Double
}