CNLiveIdentityDB.swift
3.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
//
// CNLiveMetaCodeDB.swift
// metaCode
// 数据库
// Created by daojian on 2023/6/29.
//
import Foundation
import WCDBSwift
///身份认证表名
let CNLiveIdentityTableName = "CNLiveIdentityTable"
///身份model
final class CNLiveIdentityModel: BaseModel,TableCodable {
var id: String = ""
var name: String?
var icon: String?
var createTime: String?
var enable: Bool?
enum CodingKeys: String, CodingTableKey {
typealias Root = CNLiveIdentityModel
static let objectRelationalMapping = TableBinding(CodingKeys.self){
//设置表的主键key为id,用来区分数据唯一性, 如果id为int类型,可以按实现按顺序递增
BindColumnConstraint(id, isPrimary: true)
}
case id //不修改数据库字段名,和属性名保持一直
case name //不修改数据库字段名,和属性名保持一直
case icon
case createTime
case enable
}
}
///身份列表数据库
class CNLiveIdentityDB :NSObject{
///数据库
var database:Database
//重新init方法为私有,不让外部调用
override init() {
//数据库地址
let filePath = NSHomeDirectory() + "/Documents/DB/CNLiveIdentity.db"
database = Database(at: filePath)
super.init()
self.createTable(name: CNLiveIdentityTableName, classType: CNLiveIdentityModel.self)
}
/// 创建表
/// - Parameters:
/// - name: 表名
/// - classType: class类型,当前class需要实现 TableCodable
private func createTable<Root:TableDecodable>(name:String, classType: Root.Type){
do{
try database.create(table: name, of: classType)
}catch{
print("创建失败")
}
}
/// 新增一条数据
/// - Parameter object: 数据
func insterObject(object: CNLiveIdentityModel){
let array: [CNLiveIdentityModel] = [object]
self.insterObjects(objects: array)
}
///新增多条数据
func insterObjects(objects: Array<CNLiveIdentityModel>){
do{
try database.insert(objects, intoTable: CNLiveIdentityTableName)
}catch{
print("增加一条数据失败")
}
}
/// 删除一条数据
/// - Parameter delete: 被删除的数据
func deleteObject(delete: CNLiveIdentityModel){
do{
try database.delete(fromTable: CNLiveIdentityTableName, where: CNLiveIdentityModel.Properties.id == delete.id)
}
catch{
print("删除一条数据失败")
}
}
///更新一条数据
func updateObject(newObject:CNLiveIdentityModel){
do{
//需要更新的字段
let updateProperties = [CNLiveIdentityModel.Properties.name,
CNLiveIdentityModel.Properties.icon,
CNLiveIdentityModel.Properties.createTime,
CNLiveIdentityModel.Properties.enable]
try database.update(table: CNLiveIdentityTableName, on:updateProperties, with: newObject,where: CNLiveIdentityModel.Properties.id == newObject.id)
}
catch{
print("更新一条数据失败")
}
}
///获取所有数据
func searchAllObject()-> Array<CNLiveIdentityModel>{
do{
let allData: [CNLiveIdentityModel] = try database.getObjects(fromTable: CNLiveIdentityTableName)
return allData
}
catch{
print("获取失败")
return []
}
}
}