liburno_lib
v5.0.28
Published
Liburno SQLite and utils Library
Downloads
35
Readme
liburno_lib
Questa libreria mette a disposizione un set di funzioni per facilitare la realizzazione di progetti CLI:
Mette a disposizione una classe Database (basata su better-sqlite3), alcune funzioni di servizio, per la gestione di stringhe, una classe 'Post' per comunicare con servizi BackEnd 'Liburno' e una classe per l'invio di Mail.
L'installazione:
npm i liburno_lib
la libreria include l'installazione di alcuni moduli:
- better-sqlite (con fts5)
- request
- nodemailer
all'interno della libreria ci sono diversi moduli e funzioni.
database
const {database} = require("liburno_lib")
var db=database.db('nome.db')
...
db.chiudi() // chiude anche le eventuali transazioni aperte
Questo è un wrapper di della classe database di better-sqllite. Ha le seguenti funzioni:
db=database.db(nomefile)
: apre e torna un oggetto databaseres=database.cleansql(sql)
: pulisce uno statement sql di spazi e commenti. sono accettati anche//
come inizio di commento.res=database.splitsql(sql)
: divide i comandi sq in un vettore 'pulito' in cui a ogni riga corrispone un solo comandodatabase.closeall()
: chiude tutte le istanze aperte di database.
Sono state aggiunte diverse funzioni all'oggetto db
db.run(sql,pars)
: anzichè utilizzaredb.prepare(sql).run(pars)
si può utilizzare questo metodo che permette di inserire diversi comandi sql, separati con;
. Da utilizzarsi in particolare per la creazione del database.db.begin()
,db.commit()
: inizia e termina una transazione. viene tenuto uno stack delle transazioni.db.chiudi()
: da utilizzare al posto didb.close
: tiene traccia delle transazioni e mappa il database come chiuso.db.esisteTabella(tb)
,db.esisteCampo(tb,campo)
, ispeziona la struttura per determinare se una tabella o un campo sono presenti.db.schema(table,alsodelete)
: ritorna i comandi sql per la creazione dell'intero database (table=null), ed eventualmente i comandi per la cancellazione conalsodelete=true
db.tabledef (tb)
: comando semplificato per la creazione di una tabella. ritorna l'sql specifico, in particolare per tutti i comandi di creazione FTs5 quando previstodb.export(table,mode)
: esporta una tabella in una struttura per JSONdb.import(table,data)
: importa e sovrascrive la tabella esportata. Inoltre controlla di inserire solo i campi che corrispondono all'esportazione lasciando invariati gli altri.altri: vi sono altre funzioni interessanti per la generazione automatica di comandi SQL su una tabella:
db.tabelle()
,db.campi(tabella,modo)
,db.strinsert(table)
,db.strdelete(table)
,db.strvirtual(table,search)
per la costruzione di una ricerca FTS5,db.strselect(table,orderder=false)
init
const {init}=require('liburno_lib');
const const { Reset, Bold, Reverse, Red, Green, Yellow, Blue, Magenta, Cyan, White } = init(); // ritorna una serie di varibili per colorare la console.
console.log(Red,'rosso',Yellow,Bold,'yellow',Reset,'back');
Init ha la funzione di richiamare una serie di prototipi sulle classi String, Number e Date che ne estendono la funzionalità.
L'intellisense di code
, permette di visualizzarle e usarle.
B
Contiene una serie di funzioni globali di servizio, accedibili anche direttamente.
const {B}=require('liburno_lib');
// esempio B.creaCartella('alfa/beta/gamma/)
// oppure
const {random,clamp,shuffle,creaCartella}=require('liburno_lib')
Post
Usa node-fetch
per rendere disponibili le funzioni per l'accesso ai servizi 'liburno' , e per una
lista di utilità :
const {Post}=require('liburno_lib')
const post=new Post(baseurl,utente) // i parametri baseURL e utente sono opzionali
post.post('modulo/funzione', { data}).then(res=>{ console.log(res)}) // accede a un servizio liburno
post.fetchtxt('https:///www.liburno.com').then(d=> console.log(d)); // get dell'indirizzo in formato testo
post.fetchfile(indirizzo,fileout) // scarica un file
post.fetchjson(indirizzo).then(d=> console.log(d)); // parsa un indirizzo json
post.fetchbuffer(indirizzo).then (buffer => { }) // parsa un indirizzo in formato binario, ottimo con sharp!
Questa utility usa 'nodemailer' per creare una classe mail e spedire una email.
const fs=require('fs')
const {Mail}=require('liburno_lib');
const mail=new mail(email,password);
// utilities
const fileconf=".mailconfig.json"; // file configurazione nascosto
fs.writeFileSync(fileconf,JSON.stringify(mail.config,null,2)) // struttura di un file di configurazione
... // oppure
const mail=new mail();
mail.configFile(fileconf) // imposta un file di configurazione per il trasporto
... // per inviare
mail.send(to, subject, text)
.then((info)=>{
console.log(info.messageId);
})
.catch(e=>{
console.log("Error",e);
})