refactor: use sequelize replace better-sqlite3
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import Logger from 'electron-log'
|
||||
import path from 'path'
|
||||
import { Sequelize } from 'sequelize'
|
||||
import { SequelizeStorage, Umzug } from 'umzug'
|
||||
|
||||
import { DATA_PATH } from '../config'
|
||||
|
||||
const sequelize = new Sequelize({
|
||||
dialect: 'sqlite',
|
||||
storage: path.join(DATA_PATH, 'data.db'),
|
||||
logging: false
|
||||
})
|
||||
|
||||
const umzug = new Umzug({
|
||||
migrations: { glob: 'src/main/database/migrations/*.js' },
|
||||
context: sequelize.getQueryInterface(),
|
||||
storage: new SequelizeStorage({ sequelize, modelName: 'Migration', tableName: 'migrations' }),
|
||||
logger: Logger
|
||||
})
|
||||
|
||||
export async function initDatabase() {
|
||||
try {
|
||||
await sequelize.authenticate()
|
||||
Logger.log('Database connection has been established successfully.')
|
||||
|
||||
// Run migrations
|
||||
await umzug.up()
|
||||
Logger.log('Migrations have been executed successfully.')
|
||||
} catch (error) {
|
||||
Logger.error('Migrations failed to execute:', error)
|
||||
}
|
||||
}
|
||||
|
||||
export default sequelize
|
||||
@@ -0,0 +1,48 @@
|
||||
const { Sequelize } = require('sequelize')
|
||||
|
||||
async function up({ context: queryInterface }) {
|
||||
await queryInterface.createTable('files', {
|
||||
id: {
|
||||
type: Sequelize.TEXT,
|
||||
primaryKey: true
|
||||
},
|
||||
name: {
|
||||
type: Sequelize.TEXT,
|
||||
allowNull: false
|
||||
},
|
||||
file_name: {
|
||||
type: Sequelize.TEXT,
|
||||
allowNull: false
|
||||
},
|
||||
path: {
|
||||
type: Sequelize.TEXT,
|
||||
allowNull: false
|
||||
},
|
||||
size: {
|
||||
type: Sequelize.INTEGER,
|
||||
allowNull: false
|
||||
},
|
||||
ext: {
|
||||
type: Sequelize.TEXT,
|
||||
allowNull: false
|
||||
},
|
||||
type: {
|
||||
type: Sequelize.TEXT,
|
||||
allowNull: false
|
||||
},
|
||||
created_at: {
|
||||
type: Sequelize.TEXT,
|
||||
allowNull: false
|
||||
},
|
||||
count: {
|
||||
type: Sequelize.INTEGER,
|
||||
defaultValue: 1
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
async function down({ context: queryInterface }) {
|
||||
await queryInterface.dropTable('files')
|
||||
}
|
||||
|
||||
module.exports = { up, down }
|
||||
@@ -0,0 +1,41 @@
|
||||
import { DataTypes, Model } from 'sequelize'
|
||||
|
||||
import { FileMetadata, FileType } from '../../../renderer/src/types'
|
||||
import sequelize from '..'
|
||||
|
||||
class FileModel extends Model<FileMetadata> implements FileMetadata {
|
||||
public id!: string
|
||||
public name!: string
|
||||
public file_name!: string
|
||||
public path!: string
|
||||
public size!: number
|
||||
public ext!: string
|
||||
public type!: FileType
|
||||
public created_at!: Date
|
||||
public count!: number
|
||||
}
|
||||
|
||||
FileModel.init(
|
||||
{
|
||||
id: {
|
||||
type: DataTypes.UUID,
|
||||
primaryKey: true
|
||||
},
|
||||
name: DataTypes.STRING,
|
||||
file_name: DataTypes.STRING,
|
||||
path: DataTypes.STRING,
|
||||
size: DataTypes.INTEGER,
|
||||
ext: DataTypes.STRING,
|
||||
type: DataTypes.STRING,
|
||||
created_at: DataTypes.DATE,
|
||||
count: DataTypes.INTEGER
|
||||
},
|
||||
{
|
||||
sequelize,
|
||||
modelName: 'File',
|
||||
tableName: 'files',
|
||||
timestamps: false
|
||||
}
|
||||
)
|
||||
|
||||
export default FileModel
|
||||
Reference in New Issue
Block a user