Skip to content
This repository has been archived by the owner on Mar 16, 2021. It is now read-only.

aldocd4/dpgsql

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dpgsql

dpgsql is a basic PostgreSQL client for D language.

How to use

Basic query

auto connection = new Connection("user=postgres password=root dbname=mytestdb port=5432");
connection.open();

auto command = Command(connection, "SELECT * FROM character");
writeln(command.executeScalar());

Data Reader

auto dataReader = command.executeReader();
for (;!dataReader.empty; dataReader.popFront()) 
{
  writeln(dataReader.read!string("name"));
}

// or 
foreach(row; dataReader)
{
	writeln(row);
}

Query Builder

import std.algorithm;
auto qb = QueryBuilder(connection);
writeln(qb.select("name, id").from("character").fetch().filter!(c => c.id > 6));

Entity Manager

import dpgsql;

@Table("character")
class Character : IEntity
{
    @Column("id")
    private int id;

    @Column("name")
    private wstring name;
    
    @OneToMany("character_id")
    private Item[] items;

    public void beforeInsert()
    {
        import std.stdio;
        writeln("Before insert!");
    }

    public void afterInsert()
    {
        import std.stdio;
        writeln("After insert!");
    }

    mixin Entity!(Character);
}

@Table("item")
class Item : IEntity
{
    @Column("id")
    private int id;

    @Column("character_id")
    private int characterId;

    @ManyToOne("character_id")
    private Character character;

    mixin Entity!(Item);
}

auto entitManager = EntityManager.getInstance();
entitManager.connection = connection;

auto repo = entitManager.getRepository!Character();

auto character = repo.find(5);
writeln(character.getName());

auto coco = repo.findBy(["name": "Coco"])[0];
writeln(coco.getName());

character.setName("hi");
character.update(); // or repo.update(character);

foreach(i; character.getItems())
{
    writeln(i.getId());
}

writeln(repo.insert(character));

Releases

No releases published

Packages

No packages published

Languages