CNLiveIdentityDB.swift
4.01 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
129
130
131
132
133
134
135
136
//
// 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 = ""//ID号
var name: String? = ""//名称
var icon: String? = ""//小圆图标
var createTime: String? = ""//注册时间
var enable: Bool?//没用
var backgroundImg:String? = ""//首页背景图
var backgroundColor:String? = ""//添加身份按钮背景色
var description:String? = ""//首页身份说明描述
var auth: 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
case backgroundImg
case backgroundColor
case description
case auth
}
}
///身份列表数据库
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 []
}
}
}