Patio este un motor de interogare inspirat de Sequel.
Instalare
Pentru a instala rula patio
npm instalati pieptene
Daca doriti sa utilizati executabilul patio pentru migrari
npm install -g patio
Teste de alergare
Pentru a rula testele
Pentru a rula doar testele postgres
Pentru a rula doar testele mysql
Rularea testelor cu Docker
Pentru a oferi un mediu de testare consistent si a face mai usor de testat, am inclus un fisier Docker si un docker-compose.yml pentru a facilita testarea intr-un mediu izolat. Puteti face acest lucru cu:
De ce sa folosesti terasa?
Patio este diferit, deoarece permite dezvoltatorilor sa aleaga nivelul de atractie cu care se simt confortabil.
Daca doriti sa utilizati functionalitatea ORM, puteti. Daca nu, puteti utiliza baza de date si seturile de date ca API de interogare si, daca aveti nevoie, puteti scrie SQL simplu
Concepte
-
Definitiile modelului sunt definite de tabelele din baza de date.
Pe masura ce adaugati modele, definitia este definita automat din definitia tabelului. Acest lucru este util mai ales atunci cand doriti sa va definiti modelul dintr-o schema proiectata folosind un alt instrument (de exemplu, ActiveRecord, Sequel, etc …)
-
Patio incearca sa ramana departe de drum atunci cand interoga.
Cand definiti un model, aveti in continuare libertatea de a face orice tip de interogare doriti.
Vrei doar anumite coloane?
MyModel.select (“id”, “nume”, “creat”). ForEach (functie (inregistrare) {// inregistrarea are doar id-ul, numele si coloanele create});Doriti sa va alaturati cu o alta masa?
MyModel.join (“otherTable”, {id: patio.sql.identifier (“myModelId”}). ForEach (functie (inregistrare) {// Inregistrarea are acum coloane din tabelul de alaturare!});Doriti sa rulati SQL brut?
MyModel.db.run (“select * from my_model where name = ‘Bob'”). All (). Chain (function (records) {// toate inregistrarile cu un nume egal cu bob.});Vrei sa interogi doar baza de date si sa nu folosesti un model?
var DB = patio.connect (“pg: // test: [email protected]: 5432 / test_db”); DB.from (“tabelul meu”). Filter ({id: [1,2,3]}). All (). Functie (inregistrari) {// inregistrari cu id IN (1,2,3)});
Notiuni de baza
Tot codul pentru acest exemplu poate fi gasit aici
-
Creati o noua baza de date
PostgreSQL
psql -c “CREATE DATABASE reademe_example”MySQL
mysql -e “CREATE DATABASE readme_example” -
Creati o migratie
mkdir migration patio migration-file -n createInitialTables ./migrationAceasta va adauga un nume de migrare createInitialTables in directorul dvs. de migrare.
-
Adaugati urmatorul cod la migrare
module.exports = {// up este apelat atunci cand va migrati baza de date in sus: functie (db) {// creati un tabel numit state; returneaza db .createTable (“state”, function () {this.primaryKey (“id”); this.porno muy duro pono gay
incesto madre hijos randy dave
jovencita caliente descargar pelis pornos
maduras lesbianas tetonas peliculas porno vintage
sexo con cincuentonas maduras españolas masturbandose
cine xxx porno portugues
corridas en la playa incesto real casero
porno de abuelas corridas dentro de la boca
shakira follando videos de follar
mamadas de españolas orgia porno español
comedias porno corridas de viejas
madresxxx porno con argumento
incesto abuelas sexo videos gratis
trios gays anita teen pillada por torbe
porno español años 70 coñosxxx
madre follada a la fuerza porno viejas en español
tias cachondas porno esp
el mejor video porno madres viciosas
cerdas com gratis porno india
tetas en la playa peludas pornoname (String); this.population (“integer”); this.founded (Data); this.climate (String ); this.description (“text”);}) .chain (function () {// creati un alt tabel numit capital return db.createTable (“capital”, function () {this.primaryKey (“id”); this .population (“intreg”); this.name (String); this.founded (Data); this.foreignKey (“stateId”, “state”, {key: “id”, onDelete: “CASCADE”});} );}); }, // jos este apelat atunci cand va migrati baza de date in jos: functie (db) {// drop tabelele de stare si capital returneaza db.dropTable (“capital”, “
-
Rulati migrarea
patio migrate -v –camelize -u “<DB_CONNECTION_STRING>” -d ./migration -
Conectati-va si interogati!
var patio = require (“patio”); // set camelize = true daca doriti coloanele bazei de date snakecase ca patio camelcase.camelize = true; patio.connect (“pg: //[email protected]: 5432 / readme_example”); // definiti un model de stat cu o relatie cu capital var State = patio.addModel (“state”). oneToOne (“capital”); // definiti un model de capital cu o relatie cu stat var Capital = patio.addModel (“capital”). manyToOne (“state”); // salvarea unui stat. : “Lincoln”, infiintat: data noua (1856, 0, 1), populatie: 258379}}) .chain (functie () {// salveaza un Capital return Capital.save ({nume: “Austin”, fondat: data noua (1835, 0, 1), populatie: 790390, // definiti statul inline al statului: {nume: “Texas”, populatie: 25674681, fondat: data noua (1845, 11, 29)}}); }) .chain (function () {// Interogati toate starile dupa nume return State.order („nume”). forEach (function (state) {// Obtineti returnarea capitalului asociat state.capital.chain (functie (capital) ) {console.log („capitalul% s este% s.”, state.name, capital.name);});});}) .chain (process.exit, functie (err) {console.log (err ) process.exit (1);}); lant (functie (capital) {console.log (“capitalul% s este% s.”, stat.nume, capital.nume);}); }); }) .chain (process.exit, function (err) {console.log (err) process.exit (1);}); lant (functie (capital) {console.log (“capitalul% s este% s.”, state.name, capital.name);}); }); }) .chain (process.exit, function (err) {console.log (err) process.exit (1);});
Ghiduri
- Migratii
- Modele
- Asociatiile
- Mostenire
- Validare
- Pluginuri
- Interogare
- DDL
- Logare
Caracteristici
- Documentare cuprinzatoare cu exemple.
- > 80% acoperire test
- Suport pentru URI-uri de conexiune
- Baze de date acceptate
- MySQL
- Postgres
- Tura rosie
- Modele
- Asociatiile
- Mostenire
- Validare
- Pluginuri
- Extensii simple de adaptor
- Migratii
- Bazat pe intreg si Timestamp.
- API de interogare puternic
- Tranzactii cu
- Savepoints
- Nivele de izolare
- Comitete in doua faze
- Distribuirea tipului de date SQL
- Operatiuni complete de baze de date CRUD
- createTable
- alterTable
- dropTable
- introduce
- multiInsert
- Actualizati
- elimina
- interogare








