NetNewsWire/Frameworks/Database/TagsTable.swift

44 lines
1.1 KiB
Swift
Raw Normal View History

2017-07-11 05:54:00 +02:00
//
// TagsManager.swift
// Database
//
// Created by Brent Simmons on 7/8/17.
// Copyright © 2017 Ranchero Software. All rights reserved.
//
import Foundation
import RSDatabase
import Data
2017-07-11 05:54:00 +02:00
2017-08-06 21:37:47 +02:00
// Article->tags is a many-to-many relationship.
2017-08-21 00:56:58 +02:00
// Since a tag is just a String, the tags table and the lookup table are the same table.
// All the heavy lifting is done in DatabaseLookupTable.
2017-08-06 21:37:47 +02:00
//
// CREATE TABLE if not EXISTS tags(tagName TEXT NOT NULL, articleID TEXT NOT NULL, PRIMARY KEY(tagName, articleID));
// CREATE INDEX if not EXISTS tags_tagName_index on tags (tagName COLLATE NOCASE);
2017-07-11 05:54:00 +02:00
2017-08-21 00:56:58 +02:00
struct TagsTable: DatabaseTable {
let name: String
2017-07-11 05:54:00 +02:00
2017-08-21 00:56:58 +02:00
init(name: String) {
2017-07-11 05:54:00 +02:00
self.name = name
2017-07-11 05:54:00 +02:00
}
2017-08-21 00:56:58 +02:00
// MARK: DatabaseTable Methods
func fetchObjectsWithIDs(_ databaseIDs: Set<String>, in database: FMDatabase) -> [DatabaseObject] {
// A tag is a string, and it is its own databaseID.
return databaseIDs.map{ $0 as DatabaseObject }
2017-07-11 05:54:00 +02:00
}
2017-08-21 00:56:58 +02:00
func save(_ objects: [DatabaseObject], in database: FMDatabase) {
// Nothing to do, since tags are saved in the lookup table, not in a separate table.
2017-07-11 05:54:00 +02:00
}
2017-08-21 00:56:58 +02:00
2017-07-11 05:54:00 +02:00
}