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
|
2017-07-12 22:25:10 +02:00
|
|
|
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-09-02 19:13:37 +02:00
|
|
|
final class TagsTable: DatabaseRelatedObjectsTable {
|
2017-08-21 00:56:58 +02:00
|
|
|
|
2017-07-29 21:08:10 +02:00
|
|
|
let name: String
|
2017-08-21 02:46:15 +02:00
|
|
|
let databaseIDKey = DatabaseKey.tagName
|
2017-08-21 00:56:58 +02:00
|
|
|
init(name: String) {
|
2017-07-11 05:54:00 +02:00
|
|
|
|
2017-07-29 21:08:10 +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
|
|
|
|
2017-08-21 02:46:15 +02:00
|
|
|
func objectWithRow(_ row: FMResultSet) -> DatabaseObject? {
|
|
|
|
|
|
|
|
return nil //unused
|
|
|
|
}
|
|
|
|
|
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
|
|
|
}
|
|
|
|
|