metatext/DB/Sources/DB/Content/StoredAccount.swift
2020-09-04 18:18:57 -07:00

66 lines
1.7 KiB
Swift

// Copyright © 2020 Metabolist. All rights reserved.
import Foundation
import GRDB
import Mastodon
struct StoredAccount: Codable, Hashable {
let id: String
let username: String
let acct: String
let displayName: String
let locked: Bool
let createdAt: Date
let followersCount: Int
let followingCount: Int
let statusesCount: Int
let note: HTML
let url: URL
let avatar: URL
let avatarStatic: URL
let header: URL
let headerStatic: URL
let fields: [Account.Field]
let emojis: [Emoji]
let bot: Bool
let discoverable: Bool
let movedId: String?
}
extension StoredAccount: FetchableRecord, PersistableRecord {
static func databaseJSONDecoder(for column: String) -> JSONDecoder {
MastodonDecoder()
}
static func databaseJSONEncoder(for column: String) -> JSONEncoder {
MastodonEncoder()
}
}
extension StoredAccount {
static let moved = belongsTo(StoredAccount.self, key: "moved")
init(account: Account) {
id = account.id
username = account.username
acct = account.acct
displayName = account.displayName
locked = account.locked
createdAt = account.createdAt
followersCount = account.followersCount
followingCount = account.followingCount
statusesCount = account.statusesCount
note = account.note
url = account.url
avatar = account.avatar
avatarStatic = account.avatarStatic
header = account.header
headerStatic = account.headerStatic
fields = account.fields
emojis = account.emojis
bot = account.bot
discoverable = account.discoverable
movedId = account.moved?.id
}
}