|
@@ -1,20 +1,55 @@
|
|
|
import {db} from "./db.ts"
|
|
|
import {SavedMagnet} from "@/types/magnetType.ts";
|
|
|
-
|
|
|
-function initData() {
|
|
|
+import Logger from "@/util/logger.ts";
|
|
|
+import {handle} from "@/util/promiseHandle.ts";
|
|
|
+let logger = Logger.logger('magnet_db', 'info');
|
|
|
+async function initData() {
|
|
|
+ console.log('初始化数据库')
|
|
|
// 1. 判断数据表是否存在
|
|
|
- db?.schema.createTable('magnets', (table) => {
|
|
|
- table.string('id').primary()
|
|
|
+ if(!db){
|
|
|
+ logger.error('数据库初始化失败')
|
|
|
+ throw new Error('数据库初始化失败')
|
|
|
+ }
|
|
|
+ let [err, hasTable] = await handle(db.schema.hasTable('magnets'))
|
|
|
+ if (err) {
|
|
|
+ err = err as Error;
|
|
|
+ logger.error(`[数据库初始化失败] ${err.message}`)
|
|
|
+ throw new Error('数据库初始化失败')
|
|
|
+ }
|
|
|
+ if (hasTable) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ let [createErr, _res] = await handle(db?.schema.createTable('magnets', (table) => {
|
|
|
+ logger.error(`[初始化磁贴表]`)
|
|
|
+ table.increments('id').primary()
|
|
|
table.integer('x')
|
|
|
table.integer('y')
|
|
|
table.string('type')
|
|
|
table.string('size')
|
|
|
- })
|
|
|
+ }))
|
|
|
+ if (createErr) {
|
|
|
+ createErr = createErr as Error;
|
|
|
+ logger.error(`[初始化磁贴表失败] ${createErr.message}`)
|
|
|
+ throw new Error('数据库初始化失败')
|
|
|
+ }
|
|
|
+ logger.info('[初始化磁贴表成功]')
|
|
|
+ return true;
|
|
|
}
|
|
|
-initData();
|
|
|
|
|
|
|
|
|
+
|
|
|
+export function findMagnetById(id: string) {
|
|
|
+ return db?.select(
|
|
|
+ 'id',
|
|
|
+ 'x',
|
|
|
+ 'y',
|
|
|
+ 'type',
|
|
|
+ 'size'
|
|
|
+ ).from('magnets').where('id', id)
|
|
|
+}
|
|
|
+
|
|
|
export async function getMagnetList(): Promise<SavedMagnet[]> {
|
|
|
+ initData()
|
|
|
return db?.select(
|
|
|
'id',
|
|
|
'x',
|
|
@@ -35,6 +70,9 @@ export async function changeMagnets(magnetList: SavedMagnet[]) {
|
|
|
|
|
|
// 新增数据
|
|
|
export async function addMagnet(magnet: SavedMagnet) {
|
|
|
+ initData()
|
|
|
+ // id 字段移除
|
|
|
+
|
|
|
await db?.insert(magnet).into('magnets')
|
|
|
}
|
|
|
|