123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- //
- // CreateTables.swift
- // O2OA
- //
- // Created by FancyLou on 2019/9/15.
- // Copyright © 2019 O2OA. All rights reserved.
- //
- import FMDB
- import CocoaLumberjack
- class CreateTables {
- public static let TBALE_NAME_RUN_USER = "o2_runUser"
- public static let TBALE_NAME_RUN_TRACK = "o2_runTrack"
- public static let TBALE_NAME_RUN_TRACK_POINT = "o2_runTrackPoint"
- public static let TBALE_NAME_O2_APP = "o2_appInfo"
- public static let TBALE_NAME_O2_CLOUD_FILE = "o2_cloud_file"
- public static let TABLE_NAME_O2_CONTACT_FAV = "o2_contact_favorite"
-
- private var dbQueue: FMDatabaseQueue!
- init(dbQueue: FMDatabaseQueue) {
- self.dbQueue = dbQueue
- }
- func createTables() {
- DDLogDebug("begin create tables 。。。。")
- self.createTableIfNotExist(tableName: CreateTables.TBALE_NAME_RUN_USER)
- self.createTableIfNotExist(tableName: CreateTables.TBALE_NAME_RUN_TRACK)
- self.createTableIfNotExist(tableName: CreateTables.TBALE_NAME_RUN_TRACK_POINT)
- self.createTableIfNotExist(tableName: CreateTables.TBALE_NAME_O2_APP)
- self.createTableIfNotExist(tableName: CreateTables.TBALE_NAME_O2_CLOUD_FILE)
- self.createTableIfNotExist(tableName: CreateTables.TABLE_NAME_O2_CONTACT_FAV)
- DDLogDebug("end create tables 。。。。")
- }
- private func createTableIfNotExist(tableName: String) {
- self.dbQueue.inDatabase { (db) in
- if !self.checkTableExist(tableName: tableName, db: db) {
- let createSql = self.createTableSqlByTableName(tableName: tableName)
- if createSql != "" {
- if let result = db?.executeUpdate(createSql, withArgumentsIn: []) {
- if result {
- DDLogDebug("创建表\(tableName) 成功!")
- } else {
- DDLogDebug("创建表\(tableName) 失败!")
- }
- } else {
- DDLogDebug("创建表\(tableName) 失败!")
- }
- } else {
- DDLogDebug("创建表\(tableName) 失败 没有sql语句!")
- }
- } else {
- DDLogDebug("表\(tableName) 已存在!!")
- }
- }
- }
- private func checkTableExist(tableName: String, db: FMDatabase?) -> Bool {
- let sql = self.checkTableNameSql(tableName: tableName)
- var c = 0
- if let result = db?.executeQuery(sql, withArgumentsIn: []) {
- if result.next() {
- c = result.long(forColumnIndex: 0)
- }
- result.close()
- }
- DDLogDebug("table exist, count: \(c)")
- return c > 0
- }
- private func createTableSqlByTableName(tableName: String) -> String {
- switch tableName {
- case CreateTables.TBALE_NAME_RUN_USER:
- return self.createO2RunUserTableSql()
- case CreateTables.TBALE_NAME_RUN_TRACK:
- return self.createO2RunTrackTableSql()
- case CreateTables.TBALE_NAME_RUN_TRACK_POINT:
- return self.createO2RunTrackPointTableSql()
- case CreateTables.TBALE_NAME_O2_APP:
- return self.createO2AppTableSql()
- case CreateTables.TBALE_NAME_O2_CLOUD_FILE:
- return self.createO2CloudFileSql()
- case CreateTables.TABLE_NAME_O2_CONTACT_FAV:
- return self.createO2ContactFavoriteSql()
- default:
- return ""
- }
- }
- private func checkTableNameSql(tableName: String) -> String {
- return "SELECT COUNT(*) FROM sqlite_master where type=\"table\" and name=\"\(tableName)\""
- }
- private func createO2RunUserTableSql() -> String {
- return "CREATE TABLE IF NOT EXISTS \(CreateTables.TBALE_NAME_RUN_USER) (\"userDN\" TEXT PRIMARY KEY, \"weight\" REAL,\"totalDistance\" REAL,\"totalRunTimes\" INTEGER,\"totalUseTime\" INTEGER,\"totalCalories\" INTEGER ,\"updateTime\" INTEGER )"
- }
- private func createO2RunTrackTableSql() -> String {
- return "CREATE TABLE IF NOT EXISTS \(CreateTables.TBALE_NAME_RUN_TRACK) ( \"id\" TEXT PRIMARY KEY, \"userDN\" TEXT NOT NULL, \"runDate\" INTEGER NOT NULL,\"startTime\" INTEGER NOT NULL,\"endTime\" INTEGER NOT NULL,\"useTime\" INTEGER ,\"createTime\" INTEGER ,\"distance\" REAL,\"calories\" INTEGER,\"stepNumber\" INTEGER,\"speed\" REAL,\"entityName\" TEXT)"
- }
- private func createO2RunTrackPointTableSql() -> String {
- return "CREATE TABLE IF NOT EXISTS \(CreateTables.TBALE_NAME_RUN_TRACK_POINT) ( \"id\" TEXT PRIMARY KEY , \"runId\" TEXT NOT NULL,\"pointTime\" INTEGER ,\"createTime\" INTEGER ,\"longitude\" REAL, \"latitude\" REAL )"
- }
-
- private func createO2AppTableSql() -> String {
- return "create table IF NOT EXISTS \(CreateTables.TBALE_NAME_O2_APP) (`id` integer primary key autoincrement,`title` text not null,`appid` text not null,`storyboard` text,`vcname` text,`segueidentifier` text,`normalicon` text,`selectedicon` text,`order` integer,`mainorder` integer,`categorytype` integer)"
- }
-
- private func createO2CloudFileSql() -> String {
- return "create table IF NOT EXISTS \(CreateTables.TBALE_NAME_O2_CLOUD_FILE) (`fileid` TEXT PRIMARY KEY,`filename` text not null,`filepath` text not null,`fileext` text)"
- }
-
- private func createO2ContactFavoriteSql() -> String {
- return "create table IF NOT EXISTS \(CreateTables.TABLE_NAME_O2_CONTACT_FAV) ( `id` TEXT NOT NULL, `distinguishedName` TEXT NOT NULL, `employee` TEXT, `genderType` TEXT, `lastLoginAddress` TEXT, `lastLoginClient` TEXT, `lastLoginTime` TEXT, `mail` TEXT, `mobile` TEXT, `name` TEXT, `changePasswordTime` TEXT, `superior` TEXT, `signature` TEXT, `pinyin` TEXT, `pinyinInitial` TEXT, `qq` TEXT, `unique` TEXT, `updateTime` TEXT, `weixin` TEXT, `officePhone` TEXT, `boardDate` TEXT, `birthday` TEXT, `orderNumber` INTEGER , `ownerid` TEXT NOT NULL)"
- }
- }
|