0.8.0 • Published 9 years ago
tsrecord v0.8.0
tsrecord
ActiveRecord implementation using Typescript
Conventions
table name
- table name is plural it's corresponding class name should be its singular. for example the class
Flightis equivalent to the tableflights - table name should be in lower case snake_case and its corresponding class name should be in CamelCase. example:
person_namestable will have equivalent classPersonName
table structure
- it assumes each table has a primary key with the name
id
Example
Basic Table Mapping
example for table flights
### table structure ###
id int auto increment
name varchar(50)
route_from varchar(100)
route_to varchar(100)the equivalent model class in typescript will be
class Flight extends Model{
public id :number;
public name :string;
public route_from :string;
public route_to :string;
}or if you dont want the advatages of adding field names
class Flight {
}now we can use this class for accessing the table
Basic Create Operation
you can insert data to the flights table like this.
var a = new Flight();
a.name = "Air india"
a.route_from = "india";
a.route_to = "Singapore";
a.save();Basic Read Operation
you can perform Database Read in the Following Format
var a = new Flight();
a.all(
(flights :Flight[])=>{
console.log(flights);
}
);
// or a.all(function(flight :Flight){...})
// but the former format will preserve 'this' from current class contextalso if you don't want adavatages of adding :Flight[] you can use :any
here we get data to the callback function inside all method as an array of Flight object.
Read One Record
var a = new Flight();
a.first(
(flight :Flight)=>{
console.log(flight.name); //Air india
console.log(flight.route_from) //india
console.log(flight.route_to) //Singapore
}
);Basic Delete Operation
var flight = new Flight();
flight.where("id","2").delete();Basic Update Operation
var a = new Flight();
a.where("id","1").first(
(flight :Flight)=>{
flight.name = "Air Asia"
flight.route_from = "Shanghai"
flight.save();
}
);Overriding Table Name or key
You can use @TableOverride decorator for overriding tablename or key.
@TableOverride({
tableName:"flights"
})
class random extends Model{
public id :number;
public name :string;
public route_from :string;
public route_to :string;
}0.8.0
9 years ago