Skip to content

Commit e4284e8

Browse files
committed
BasicDatabase 2->1 tpl arg, doc fixs
1 parent 25f0291 commit e4284e8

8 files changed

Lines changed: 93 additions & 88 deletions

File tree

src/std/database/BasicDatabase.d

Lines changed: 63 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,3 @@
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

4543
public 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;

src/std/database/freetds/database.d

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,17 @@ struct DefaultPolicy {
2121
alias Allocator = MyMallocator;
2222
}
2323

24-
alias Database(T) = BasicDatabase!(Driver!T,T);
24+
alias Database(T) = BasicDatabase!(Driver);
2525

2626
auto createDatabase()(string defaultURI="") {
2727
return Database!DefaultPolicy(defaultURI);
2828
}
2929

3030

31-
struct Driver(Policy) {
31+
struct Driver(P) {
32+
alias Policy = P;
3233
alias Allocator = Policy.Allocator;
33-
alias Cell = BasicCell!(Driver!Policy,Policy);
34+
alias Cell = BasicCell!(Driver);
3435

3536
private static bool isError(RETCODE ret) {
3637
return

src/std/database/mysql/database.d

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ import std.string;
2727

2828
// alias Database(T) = std.database.impl.Database!(T,DatabaseImpl!T);
2929

30-
alias Database(T) = BasicDatabase!(Driver!T.Sync,T);
30+
alias Database(T) = BasicDatabase!(Driver!T.Sync);
3131

32-
alias AsyncDatabase(T) = BasicDatabase!(Driver!T.Async,T);
32+
alias AsyncDatabase(T) = BasicDatabase!(Driver!T.Async);
3333

3434

3535
struct DefaultPolicy {
@@ -77,7 +77,8 @@ private static void raiseError()(string msg, MYSQL_STMT* stmt, int ret) {
7777
throw new DatabaseException("mysql error: " ~ msg);
7878
}
7979

80-
private struct Driver(Policy) {
80+
private struct Driver(P) {
81+
alias Policy = P;
8182

8283
struct Describe {
8384
int index;
@@ -98,7 +99,7 @@ private struct Driver(Policy) {
9899

99100
struct Sync {
100101
alias Allocator = Policy.Allocator;
101-
alias Cell = BasicCell!(Sync,Policy);
102+
alias Cell = BasicCell!(Sync);
102103
alias const(ubyte)* cstring;
103104

104105
alias Describe = Driver!Policy.Describe;
@@ -436,7 +437,7 @@ private struct Driver(Policy) {
436437
alias Allocator = Policy.Allocator;
437438
alias Describe = Driver!Policy.Describe;
438439
alias Bind = Driver!Policy.Bind;
439-
alias Cell = BasicCell!(Async,Policy);
440+
alias Cell = BasicCell!(Async);
440441

441442
struct Database {
442443
alias queryVariableType = QueryVariableType.QuestionMark;

src/std/database/odbc/database.d

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,16 @@ struct DefaultPolicy {
2929
alias Allocator = MyMallocator;
3030
}
3131

32-
alias Database(T) = BasicDatabase!(Driver!T,T);
32+
alias Database(T) = BasicDatabase!(Driver);
3333

3434
auto createDatabase()(string defaultURI="") {
3535
return Database!DefaultPolicy(defaultURI);
3636
}
3737

38-
struct Driver(Policy) {
38+
struct Driver(P) {
39+
alias Policy = P;
3940
alias Allocator = Policy.Allocator;
40-
alias Cell = BasicCell!(Driver,Policy);
41+
alias Cell = BasicCell!(Driver);
4142

4243
struct Database {
4344
alias queryVariableType = QueryVariableType.QuestionMark;

src/std/database/oracle/database.d

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ struct DefaultPolicy {
2222
alias Allocator = MyMallocator;
2323
}
2424

25-
alias Database(T) = BasicDatabase!(Driver!T,T);
25+
alias Database(T) = BasicDatabase!(Driver!T);
2626

2727
auto createDatabase()(string defaultURI="") {
2828
return Database!DefaultPolicy(defaultURI);
@@ -68,9 +68,10 @@ void attrGet(T)(void* handle, ub4 handleType, OCIError* error, ub4 attribute, re
6868

6969

7070

71-
struct Driver(Policy) {
71+
struct Driver(P) {
72+
alias Policy = P;
7273
alias Allocator = Policy.Allocator;
73-
alias Cell = BasicCell!(Driver,Policy);
74+
alias Cell = BasicCell!(Driver);
7475

7576

7677

src/std/database/poly/database.d

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import std.database.variant;
2121

2222
import std.meta;
2323

24-
alias Database(T) = BasicDatabase!(Driver!T,T);
24+
alias Database(T) = BasicDatabase!(Driver!T);
2525

2626
struct DefaultPolicy {
2727
alias Allocator = MyMallocator;
@@ -36,9 +36,10 @@ auto createDatabase()(string defaultURI="") {
3636
return Database!DefaultPolicy(defaultURI);
3737
}
3838

39-
struct Driver(Policy) {
39+
struct Driver(P) {
40+
alias Policy = P;
4041
alias Allocator = Policy.Allocator;
41-
alias Cell = BasicCell!(Driver,Policy);
42+
alias Cell = BasicCell!(Driver);
4243
alias BindArgs = Array!Variant;
4344

4445
// revise using allocator make

src/std/database/postgres/database.d

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ struct DefaultPolicy {
2323
static const bool nonblocking = false;
2424
}
2525

26-
alias Database(T) = BasicDatabase!(Driver!T,T);
26+
alias Database(T) = BasicDatabase!(Driver!T);
2727

2828
auto createDatabase()(string defaultURI="") {
2929
return Database!DefaultPolicy(defaultURI);
@@ -64,9 +64,10 @@ int checkForZero()(PGconn *con, string msg, int result) {
6464
return result;
6565
}
6666

67-
struct Driver(Policy) {
67+
struct Driver(P) {
68+
alias Policy = P;
6869
alias Allocator = Policy.Allocator;
69-
alias Cell = BasicCell!(Driver,Policy);
70+
alias Cell = BasicCell!(Driver);
7071

7172
struct Database {
7273
static const auto queryVariableType = QueryVariableType.Dollar;

0 commit comments

Comments
 (0)