mirror of
				https://gitlab.com/MrFry/mrfrys-node-server
				synced 2025-04-01 20:24:18 +02:00 
			
		
		
		
	Db tools extend
This commit is contained in:
		@@ -2,16 +2,17 @@
 | 
			
		||||
// https://github.com/JoshuaWise/better-sqlite3/blob/HEAD/docs/api.md
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  GetDB,
 | 
			
		||||
  AddColumn,
 | 
			
		||||
  TableInfo,
 | 
			
		||||
  Update,
 | 
			
		||||
  Delete,
 | 
			
		||||
  CreateTable,
 | 
			
		||||
  SelectAll,
 | 
			
		||||
  Select,
 | 
			
		||||
  Insert,
 | 
			
		||||
  CloseDB,
 | 
			
		||||
  GetDB: GetDB,
 | 
			
		||||
  AddColumn: AddColumn,
 | 
			
		||||
  TableInfo: TableInfo,
 | 
			
		||||
  Update: Update,
 | 
			
		||||
  Delete: Delete,
 | 
			
		||||
  CreateTable: CreateTable,
 | 
			
		||||
  SelectAll: SelectAll,
 | 
			
		||||
  Select: Select,
 | 
			
		||||
  Insert: Insert,
 | 
			
		||||
  CloseDB: CloseDB,
 | 
			
		||||
  runStatement: runStatement,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
import Sqlite from 'better-sqlite3'
 | 
			
		||||
@@ -21,7 +22,7 @@ import utils from '../utils/utils'
 | 
			
		||||
const debugLog = process.env.NS_SQL_DEBUG_LOG
 | 
			
		||||
 | 
			
		||||
// { asd: 'asd', basd: 4 } => asd = 'asd', basd = 4
 | 
			
		||||
function GetSqlQuerry(conditions, type) {
 | 
			
		||||
function GetSqlQuerry(conditions: any, type: string, joiner?: string) {
 | 
			
		||||
  const res = Object.keys(conditions).reduce((acc, key) => {
 | 
			
		||||
    const item = conditions[key]
 | 
			
		||||
    if (typeof item === 'string') {
 | 
			
		||||
@@ -32,7 +33,11 @@ function GetSqlQuerry(conditions, type) {
 | 
			
		||||
    return acc
 | 
			
		||||
  }, [])
 | 
			
		||||
  if (type === 'where') {
 | 
			
		||||
    return res.join(' AND ')
 | 
			
		||||
    if (joiner) {
 | 
			
		||||
      return res.join(` ${joiner} `)
 | 
			
		||||
    } else {
 | 
			
		||||
      return res.join(' AND ')
 | 
			
		||||
    }
 | 
			
		||||
  } else {
 | 
			
		||||
    return res.join(', ')
 | 
			
		||||
  }
 | 
			
		||||
@@ -158,7 +163,7 @@ function CreateTable(db: any, name: any, columns: any, foreignKeys: any): any {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // IF NOT EXISTS
 | 
			
		||||
    const command = `CREATE TABLE ${name}(${cols}${fKeys.join(', ')})`
 | 
			
		||||
    const command = `CREATE TABLE ${name}(${cols}${fKeys.join(' ')})`
 | 
			
		||||
    const stmt = PrepareStatement(db, command)
 | 
			
		||||
    return stmt.run()
 | 
			
		||||
  } catch (err) {
 | 
			
		||||
@@ -177,13 +182,21 @@ function SelectAll(db: any, from: any): any {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function Select(db: any, from: any, conditions: any): any {
 | 
			
		||||
// SELECT * FROM MyTable WHERE SomeColumn > LastValue ORDER BY SomeColumn LIMIT 100;
 | 
			
		||||
function Select(db: any, from: any, conditions: any, options: any = {}): any {
 | 
			
		||||
  const { joiner, limit } = options
 | 
			
		||||
 | 
			
		||||
  try {
 | 
			
		||||
    const command = `SELECT * from ${from} WHERE ${GetSqlQuerry(
 | 
			
		||||
    let command = `SELECT * from ${from} WHERE ${GetSqlQuerry(
 | 
			
		||||
      conditions,
 | 
			
		||||
      'where'
 | 
			
		||||
      'where',
 | 
			
		||||
      joiner
 | 
			
		||||
    )}`
 | 
			
		||||
 | 
			
		||||
    if (!isNaN(limit)) {
 | 
			
		||||
      command += ` LIMIT ${limit}`
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const stmt = PrepareStatement(db, command)
 | 
			
		||||
    return stmt.all()
 | 
			
		||||
  } catch (err) {
 | 
			
		||||
@@ -221,6 +234,15 @@ function Insert(db: any, table: any, data: any): any {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function runStatement(db: any, command: string, runType?: string): any {
 | 
			
		||||
  const stmt = PrepareStatement(db, command)
 | 
			
		||||
  if (!runType) {
 | 
			
		||||
    return stmt.all()
 | 
			
		||||
  } else if (runType === 'run') {
 | 
			
		||||
    return stmt.run()
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function CloseDB(db: any): void {
 | 
			
		||||
  db.close((err) => {
 | 
			
		||||
    if (err) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user