⛔️ This project is not actively maintained: expect issues, and delays in reviews
- 🗣 Supports PostgreSQL, MySQL, MariaDB, SQLite and MongoDB
- 🔥 Simple, typed API
- 🦕 Deno-ready
- Read the documentation
import{DataTypes,Database,Model,PostgresConnector}from'https://deno.land/x/denodb/mod.ts';
constconnection=newPostgresConnector({
host:'...',
username:'user',
password:'password',
database:'airlines',
});
constdb=newDatabase(connection);
classFlightextendsModel{
statictable='flights';
statictimestamps=true;
staticfields={
id:{primaryKey:true,autoIncrement:true},
departure:DataTypes.STRING,
destination:DataTypes.STRING,
flightDuration:DataTypes.FLOAT,
};
staticdefaults={
flightDuration:2.5,
};
}
db.link([Flight]);
awaitdb.sync({drop:true});
awaitFlight.create({
departure:'Paris',
destination:'Tokyo',
});
// or
constflight=newFlight();
flight.departure='London';
flight.destination='San Francisco';
awaitflight.save();
awaitFlight.select('destination').all();
// [ { destination: "Tokyo" }, { destination: "San Francisco" } ]
awaitFlight.where('destination','Tokyo').delete();
constsfFlight=awaitFlight.select('destination').find(2);
// { destination: "San Francisco" }
awaitFlight.count();
// 1
awaitFlight.select('id','destination').orderBy('id').get();
// [ { id: "2", destination: "San Francisco" } ]
awaitsfFlight.delete();
awaitdb.close();
Setting up your database with DenoDB is a four-step process:
-
Create a database,using
Database
(learn moreabout clients):constconnection=newPostgresConnector({ host:'...', username:'user', password:'password', database:'airlines', }); constdb=newDatabase(connection);
-
Create models,extending
Model
.table
andfields
are both required static attributes:classUserextendsModel{ statictable='users'; statictimestamps=true; staticfields={ id:{ primaryKey:true, autoIncrement:true, }, name:DataTypes.STRING, email:{ type:DataTypes.STRING, unique:true, allowNull:false, length:50, }, }; }
-
Link your models,to add them to your database instance:
db.link([User]);
-
Optional:Create tables in your database,by using
sync(...)
:awaitdb.sync();
-
Query your models!
awaitUser.create({name:'Amelia'}); awaitUser.all(); awaitUser.deleteById('1');
v1.0.21
:Migrate to connectors
MIT License —eveningkid