1- module std.database.BasicDatabase ;
2- import std.experimental.logger ;
3- import std.database.exception ;
4- import std.datetime ;
5-
6- import std.typecons ;
7- import std.database.common ;
8- import std.database.pool ;
9- import std.database.resolver ;
10- import std.database.source ;
11-
12- import std.database.allocator ;
13- import std.traits ;
14- import std.container.array ;
15- import std.variant ;
16-
17- import std.range.primitives ;
18- import std.database.option ;
19-
201/**
212 BasicDatabase: a common and generic front-end for database access
223
@@ -36,11 +17,28 @@ import std.database.option;
3617 with a driver:
3718 ---
3819 import std.database;
39- alias DB = BasicDatabase!(MyDriver!MyPolicy, MyPolicy );
20+ alias DB = BasicDatabase!(MyDriver);
4021 ---
4122
4223*/
24+ module std.database.BasicDatabase ;
25+ import std.experimental.logger ;
26+ import std.database.exception ;
27+ import std.datetime ;
4328
29+ import std.typecons ;
30+ import std.database.common ;
31+ import std.database.pool ;
32+ import std.database.resolver ;
33+ import std.database.source ;
34+
35+ import std.database.allocator ;
36+ import std.traits ;
37+ import std.container.array ;
38+ import std.variant ;
39+
40+ import std.range.primitives ;
41+ import std.database.option ;
4442
4543public import std.database.array ;
4644
@@ -71,13 +69,13 @@ alias FeatureArray = Feature[];
7169 A root type for interacting with databases. It's primary purpose is act as
7270 a factory for database connections. This type can be shared across threads.
7371*/
74- struct BasicDatabase (D,P ) {
72+ struct BasicDatabase (D) {
7573 alias Driver = D;
76- alias Policy = P ;
74+ alias Policy = Driver.Policy ;
7775 alias Database = Driver.Database ;
7876 alias Allocator = Policy.Allocator;
79- alias Connection = BasicConnection! (Driver,Policy );
80- alias Cell = BasicCell! (Driver,Policy );
77+ alias Connection = BasicConnection! (Driver);
78+ alias Cell = BasicCell! (Driver);
8179 alias Pool = .Pool! (Driver.Connection);
8280 alias ScopedResource = .ScopedResource! Pool;
8381
@@ -146,12 +144,12 @@ auto ref driverDatabase() {return data_.database;}
146144/**
147145 Holds a connection to the database.
148146*/
149- struct BasicConnection (D,P ) {
147+ struct BasicConnection (D) {
150148 alias Driver = D;
151- alias Policy = P ;
149+ alias Policy = Driver.Policy ;
152150 alias DriverConnection = Driver.Connection;
153- alias Statement = BasicStatement! (Driver,Policy );
154- alias Database = BasicDatabase! (Driver,Policy );
151+ alias Statement = BasicStatement! (Driver);
152+ alias Database = BasicDatabase! (Driver);
155153 alias Pool = Database .Pool;
156154 alias ScopedResource = Database .ScopedResource;
157155 alias DatabaseImpl = Driver.Database ;
@@ -229,14 +227,14 @@ data_ = Data(&db.data_.refCountedPayload(),uri);
229227/**
230228 Manages statement details such as query execution and input binding.
231229*/
232- struct BasicStatement (D,P ) {
230+ struct BasicStatement (D) {
233231 alias Driver = D;
234- alias Policy = P ;
232+ alias Policy = Driver.Policy ;
235233 alias DriverStatement = Driver.Statement;
236- alias Connection = BasicConnection! (Driver,Policy );
237- alias Result = BasicResult! (Driver,Policy );
238- alias RowSet = BasicRowSet! (Driver,Policy );
239- alias ColumnSet = BasicColumnSet! (Driver,Policy );
234+ alias Connection = BasicConnection! (Driver);
235+ alias Result = BasicResult! (Driver);
236+ alias RowSet = BasicRowSet! (Driver);
237+ alias ColumnSet = BasicColumnSet! (Driver);
240238 // alias Allocator = Policy.Allocator;
241239 alias ScopedResource = Connection.ScopedResource;
242240
@@ -342,12 +340,12 @@ struct BasicStatement(D,P) {
342340 An internal class for result access and iteration. See the RowSet type for range based access
343341 to results
344342*/
345- struct BasicResult (D,P ) {
343+ struct BasicResult (D) {
346344 alias Driver = D;
347- alias Policy = P ;
345+ alias Policy = Driver.Policy ;
348346 alias ResultImpl = Driver.Result;
349- alias Statement = BasicStatement! (Driver,Policy );
350- alias RowSet = BasicRowSet! (Driver,Policy );
347+ alias Statement = BasicStatement! (Driver);
348+ alias RowSet = BasicRowSet! (Driver);
351349 // alias Allocator = Driver.Policy.Allocator;
352350 alias Bind = Driver.Bind;
353351 // alias Row = .Row;
@@ -402,11 +400,11 @@ package:
402400/**
403401 A range over result column information
404402*/
405- struct BasicColumnSet (D,P ) {
403+ struct BasicColumnSet (D) {
406404 alias Driver = D;
407- alias Policy = P ;
408- alias Result = BasicResult! (Driver,Policy );
409- alias Column = BasicColumn! (Driver,Policy );
405+ alias Policy = Driver.Policy ;
406+ alias Result = BasicResult! (Driver);
407+ alias Column = BasicColumn! (Driver);
410408 private Result result_;
411409
412410 this (Result result) {
@@ -428,10 +426,10 @@ struct BasicColumnSet(D,P) {
428426}
429427
430428
431- struct BasicColumn (D,P ) {
429+ struct BasicColumn (D) {
432430 alias Driver = D;
433- alias Policy = P ;
434- alias Result = BasicResult! (Driver,Policy );
431+ alias Policy = Driver.Policy ;
432+ alias Result = BasicResult! (Driver);
435433 private Result result_;
436434 private size_t idx_;
437435
@@ -449,12 +447,12 @@ struct BasicColumn(D,P) {
449447/**
450448 A input range over the results of a query.
451449*/
452- struct BasicRowSet (D,P ) {
450+ struct BasicRowSet (D) {
453451 alias Driver = D;
454- alias Policy = P ;
455- alias Result = BasicResult! (Driver,Policy );
456- alias Row = BasicRow! (Driver,Policy );
457- alias ColumnSet = BasicColumnSet! (Driver,Policy );
452+ alias Policy = Driver.Policy ;
453+ alias Result = BasicResult! (Driver);
454+ alias Row = BasicRow! (Driver);
455+ alias ColumnSet = BasicColumnSet! (Driver);
458456
459457 void rowSetTag ();
460458
@@ -522,14 +520,14 @@ struct BasicRowSet(D,P) {
522520/**
523521 A row accessor for the current row in a RowSet input range.
524522*/
525- struct BasicRow (D,P ) {
523+ struct BasicRow (D) {
526524 alias Driver = D;
527- alias Policy = P ;
528- alias Result = BasicResult! (Driver,Policy );
529- alias RowSet = BasicRowSet! (Driver,Policy );
530- alias Cell = BasicCell! (Driver,Policy );
531- alias Value = BasicValue! (Driver,Policy );
532- alias Column = BasicColumn! (Driver,Policy );
525+ alias Policy = Driver.Policy ;
526+ alias Result = BasicResult! (Driver);
527+ alias RowSet = BasicRowSet! (Driver);
528+ alias Cell = BasicCell! (Driver);
529+ alias Value = BasicValue! (Driver);
530+ alias Column = BasicColumn! (Driver);
533531
534532 private RowSet rows_;
535533
@@ -564,12 +562,12 @@ struct BasicRow(D,P) {
564562/**
565563 A value accessor for an indexed value in the current row in a RowSet input range.
566564*/
567- struct BasicValue (D,P ) {
565+ struct BasicValue (D) {
568566 alias Driver = D;
569- alias Policy = P ;
567+ alias Policy = Driver.Policy ;
570568 // alias Result = Driver.Result;
571- alias Result = BasicResult! (Driver,Policy );
572- alias Cell = BasicCell! (Driver,Policy );
569+ alias Result = BasicResult! (Driver);
570+ alias Cell = BasicCell! (Driver);
573571 alias Bind = Driver.Bind;
574572 private Result* result_;
575573 private Bind* bind_;
@@ -632,10 +630,10 @@ struct EfficientValue(T) {
632630}
633631
634632
635- struct BasicCell (D,P ) {
633+ struct BasicCell (D) {
636634 alias Driver = D;
637- alias Policy = P ;
638- alias Result = BasicResult! (Driver,Policy );
635+ alias Policy = Driver.Policy ;
636+ alias Result = BasicResult! (Driver);
639637 alias Bind = Driver.Bind;
640638 private Bind* bind_;
641639 private int rowIdx_;
@@ -656,7 +654,7 @@ struct Converter(D,P) {
656654 alias Policy = P;
657655 alias Result = Driver.Result;
658656 alias Bind = Driver.Bind;
659- alias Cell = BasicCell! (Driver,Policy );
657+ alias Cell = BasicCell! (Driver);
660658
661659 static Y convert (Y)(Result * r, ref Cell cell) {
662660 ValueType x = cell.bind.type, y = TypeInfo ! Y.type;
0 commit comments