Day_Count_Memory_Days/anniversary_Project/Tool/WCDB.swift
2024-07-15 11:52:15 +08:00

137 lines
4.1 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// WCDB.swift
// anniversary_Project
//
// Created by 16 on 2024/4/11.
//
import UIKit
import Foundation
import WCDBSwift
/*
0
1
2
3
4
5
6
*/
///
fileprivate struct WCDataBasePath{
let dbPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last! + "/PrWCDB/Test.db"
}
class PrWCDBBaseManager : NSObject{
static let shared = PrWCDBBaseManager()
let dbPath = URL(fileURLWithPath: WCDataBasePath().dbPath)
var dataBase : Database?
private override init() {
super.init()
dataBase = creteDb()
}
///
private func creteDb() -> Database {
return Database(at: dbPath)
}
///
func createTable<T:TableDecodable>(table: String, of type:T.Type){
do {
try dataBase?.create(table: table, of: type)
} catch let error {
debugPrint("create table error \(error.localizedDescription)")
}
}
///
///propertyConvertibleList
/// WCDB Swift 1 WCDB Swift
func insertToDb<T: TableEncodable>(objects: [T],intoTable table : String) {
do {
try dataBase?.insertOrReplace(objects, intoTable: table)
} catch let error {
debugPrint("insert table error \(error.localizedDescription)")
}
}
/// propertys object condition
func updateToDb<T : TableEncodable>(table: String, on propertys:[PropertyConvertible],with object:T,where condition: Condition? = nil){
do {
try dataBase?.update(table: table, on: propertys, with: object, where: condition)
} catch let error {
debugPrint("update table error \(error.localizedDescription)")
}
}
/// ,
/// - Parameters:
/// - fromTable:
/// - condition:
func deleteFromDb(fromTable: String, where condition: Condition? = nil){
do {
try dataBase?.delete(fromTable: fromTable, where:condition)
} catch let error {
debugPrint("delete error \(error.localizedDescription)")
}
}
///
/// - Returns: T
/// WINQ
/*
+-!
||&&+-*/|&<<>><<===!=>>=
INBETWEEN
LIKEGLOBMATCHREGEXP
AVGCOUNTMAXMINSUM
*/
func qureyFromDb<T: TableDecodable>(fromTable: String, cls cName: T.Type, where condition: Condition? = nil, orderBy orderList:[OrderBy]? = nil) -> [T]? {
do {
let allObjects: [T] = try (dataBase?.getObjects(fromTable: fromTable, where:condition, orderBy:orderList))!
debugPrint("\(allObjects)");
return allObjects
} catch let error {
debugPrint("no data find \(error.localizedDescription)")
}
return nil
}
///
func dropTable(table : String) {
do {
try dataBase?.drop(table: table)
} catch let error {
debugPrint("drop table error \(error.localizedDescription)")
}
}
///
func removeDbFile(){
do {
try dataBase?.close(onClosed: {
try self.dataBase?.removeFiles()
})
} catch let error {
debugPrint("not close db \(error.localizedDescription)")
}
}
}