CNIdentityDB.swift
3.55 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
//
// CNMetaCodeDB.swift
// metaCode
// 数据库
// Created by daojian on 2023/6/29.
//
import Foundation
import WCDBSwift
///身份认证表名
let CNIdentityTableName = "CNIdentityTable"
///身份model
class CNIdentityModel: BaseModel,TableCodable {
var id: String = ""
var name: String?
var icon: String?
var createTime: String?
var enable: Bool?
enum CodingKeys: String, CodingTableKey {
typealias Root = CNIdentityModel
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 CNIdentityDB :NSObject{
///数据库
var database:Database
//重新init方法为私有,不让外部调用
override init() {
//数据库地址
let filePath = NSHomeDirectory() + "/Documents/DB/CNIdentity.db"
database = Database(at: filePath)
super.init()
self.createTable(name: CNIdentityTableName, classType: CNIdentityModel.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: CNIdentityModel){
let array: [CNIdentityModel] = [object]
self.insterObjects(objects: array)
}
///新增多条数据
func insterObjects(objects: Array<CNIdentityModel>){
do{
try database.insert(objects, intoTable: CNIdentityTableName)
}
catch{
print("增加一条数据失败")
}
}
/// 删除一条数据
/// - Parameter delete: 被删除的数据
func deleteObject(delete: CNIdentityModel){
do{
try database.delete(fromTable: CNIdentityTableName, where: CNIdentityModel.Properties.id == delete.id)
}
catch{
print("删除一条数据失败")
}
}
///更新一条数据
func updateObject(newObject:CNIdentityModel){
do{
//需要更新的字段
let updateProperties = [CNIdentityModel.Properties.name,
CNIdentityModel.Properties.icon,
CNIdentityModel.Properties.createTime,
CNIdentityModel.Properties.enable]
try database.update(table: CNIdentityTableName, on:updateProperties, with: newObject,where: CNIdentityModel.Properties.id == newObject.id)
}
catch{
print("更新一条数据失败")
}
}
///获取所有数据
func searchAllObject()-> Array<CNIdentityModel>{
do{
let allData: [CNIdentityModel] = try database.getObjects(fromTable: CNIdentityTableName)
return allData
}
catch{
print("获取失败")
return []
}
}
}