Skip to content

Commit b10e58f

Browse files
authored
Merge pull request #1 from atreeon/v0.2_tokenised_insert_update_delete
Version 0.2
2 parents 6fb93b1 + dff28ac commit b10e58f

File tree

133 files changed

+1961
-5715
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

133 files changed

+1961
-5715
lines changed

easy_orm_cli/bin/easy_orm_cli.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@ Future<void> _main(List<String> args) async {
8585
}
8686

8787
if (!await Directory("lib").exists()) {
88+
print('lib folder must exist');
89+
print(Directory.current.path);
90+
var dir = Directory.current;
91+
var entities = await dir.list().toList();
92+
print(entities.join(","));
8893
print('lib folder must exist');
8994
return;
9095
}

easy_orm_cli/lib/generator.dart

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import 'package:postgrest_cli/templates/definition_template.dart';
1010
import 'package:postgrest_cli/templates/modelParameters_subTemplate.dart';
1111
import 'package:postgrest_cli/templates/model_template.dart';
1212
import 'package:postgrest_cli/templates/propertySet_subTemplate.dart';
13-
import 'package:postgrest_cli/templates/service_template.dart';
1413
import 'package:postgrest_cli/util/dePluralise.dart';
1514
import 'package:templater_atreeon/templater_atreeon.dart';
1615

@@ -34,26 +33,27 @@ Future<List<String>> performGenerate({
3433
await Directory("lib/generatedDb/definitions").create();
3534
}
3635

37-
if (!await Directory("lib/generatedDb/services").exists()) {
38-
await Directory("lib/generatedDb/services").create();
39-
}
36+
// if (!await Directory("lib/generatedDb/services").exists()) {
37+
// await Directory("lib/generatedDb/services").create();
38+
// }
4039

4140
//get the list of tables from the db
4241
var tablesRaw = await getTablesRawFromDb(postgresConnection, table_schema);
4342
var tables = convertRawTablesToTables(tablesRaw);
4443

4544
//get maps for each template
46-
var serviceMap = tablesToTemplateMap(tables, packageName, (x) => StringUtils.capitalize(x.name) + "Service.dart");
47-
var definitionMap = tablesToTemplateMap(tables, packageName, (x) => StringUtils.capitalize(x.name) + "Definition.dart");
48-
var modelMap = tablesToTemplateMap(tables, packageName, (x) => dePluralise(StringUtils.capitalize(x.name)) + ".dart");
45+
//We've removed service file from the generated output files
46+
// var serviceMap = convertTablesToTemplateMap(tables, packageName, (x) => StringUtils.capitalize(x.name) + "Service.dart");
47+
var definitionMap = convertTablesToTemplateMap(tables, packageName, (x) => StringUtils.capitalize(x.name) + "Definition.dart");
48+
var modelMap = convertTablesToTemplateMap(tables, packageName, (x) => dePluralise(StringUtils.capitalize(x.name)) + ".dart");
4949

50-
//process service template
51-
var serviceTemplater = Templater(templateMain: service_template);
52-
var serviceOutput = await serviceTemplater.writeFiles(
53-
"lib/generatedDb/services",
54-
serviceMap,
55-
writeFiles: writeFiles,
56-
);
50+
// //process service template
51+
// var serviceTemplater = Templater(templateMain: service_template);
52+
// var serviceOutput = await serviceTemplater.writeFiles(
53+
// "lib/generatedDb/services",
54+
// serviceMap,
55+
// writeFiles: writeFiles,
56+
// );
5757

5858
//process definition template
5959
var definitionTemplater = Templater(
@@ -83,5 +83,9 @@ Future<List<String>> performGenerate({
8383
writeFiles: writeFiles,
8484
);
8585

86-
return [...serviceOutput, ...definitionOutput, ...modelOutput];
86+
return [
87+
// ...serviceOutput,
88+
...definitionOutput,
89+
...modelOutput,
90+
];
8791
}

easy_orm_cli/lib/helpers/Column.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ class Column {
22
final String dbType;
33
final String columnName;
44
final bool nullable;
5+
final bool isIdentity;
56

67
Column({
78
required this.dbType,
89
required this.columnName,
910
required this.nullable,
11+
required this.isIdentity,
1012
});
1113

12-
String toString() => "$dbType, $columnName, $nullable";
14+
String toString() => "$dbType, $columnName, $nullable, $isIdentity";
1315
}

easy_orm_cli/lib/helpers/convertRawTablesToTables.dart

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import 'package:postgrest_cli/helpers/lookupDbType.dart';
2+
13
import '../../util/linqH.dart';
24
import 'Column.dart';
35
import 'Table.dart';
@@ -15,11 +17,15 @@ List<Table> convertRawTablesToTables(List<Map<String, Map<String, dynamic>>> raw
1517
return Table(
1618
e.key,
1719
e.values
18-
.map((x) => Column(
19-
dbType: x["udt_name"],
20-
columnName: x["column_name"],
21-
nullable: x["is_nullable"] == "YES" ? true : false,
22-
))
20+
.map(
21+
(x) => Column(
22+
dbType: x["udt_name"],
23+
columnName: x["column_name"],
24+
nullable: x["is_nullable"] == "YES" ? true : false,
25+
isIdentity: x["is_identity"] == "YES" ? true : false,
26+
),
27+
)
28+
.where((c) => !unsupportedColumnTypes.any((unsupportedType) => c.dbType == unsupportedType))
2329
.toList(),
2430
);
2531
}).toList();

easy_orm_cli/lib/helpers/lookupDbType.dart

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@ String lookupDbType(String dbType, Map<String, String> lookup) {
88
return result;
99
}
1010

11+
var unsupportedColumnTypes = ["bytea"];
12+
1113
var convertDbTypeToDartType = {
1214
"int2": "int",
1315
"int4": "int",
1416
"bool": "bool",
1517
"bpchar": "String",
16-
"bytea": "String",
17-
"date": "String",
18+
// "bytea": "Uint8List",
19+
"date": "DateTime",
1820
"text": "String",
1921
"varchar": "String",
2022
"float4": "double",
@@ -24,10 +26,10 @@ var convertDbTypeToDartType = {
2426
var convertDbTypeToColumnType = {
2527
"int2": "Numeric",
2628
"int4": "Numeric",
27-
"bool": "bool",
29+
"bool": "Bool",
2830
"bpchar": "Char",
29-
"bytea": "Char",
30-
"date": "Char",
31+
// "bytea": "Uint8List",
32+
"date": "DateTime",
3133
"text": "Char",
3234
"varchar": "Char",
3335
"float4": "Numeric",

easy_orm_cli/lib/helpers/tablesToTemplateMap.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import 'package:postgrest_cli/util/dePluralise.dart';
55
import 'Table.dart';
66

77
///converts our list of Tables & Columns to our Map to be used in our templates
8-
Map<String, Map<String, dynamic>> tablesToTemplateMap(
8+
Map<String, Map<String, dynamic>> convertTablesToTemplateMap(
99
List<Table> tables,
1010
String packageName,
1111
String Function(Table) getFilename,
@@ -20,11 +20,13 @@ Map<String, Map<String, dynamic>> tablesToTemplateMap(
2020
"columns": table.columns
2121
.map((column) => {
2222
"dbType": column.dbType,
23-
"dartType": lookupDbType(column.dbType, convertDbTypeToDartType),
23+
"dartType": lookupDbType(column.dbType, convertDbTypeToDartType) + (column.nullable ? "?" : ""),
2424
"columnName": column.columnName,
2525
"nullable": column.nullable.toString(),
2626
"tableName": table.name,
27-
"columnType": lookupDbType(column.dbType, convertDbTypeToColumnType),
27+
"columnType": (column.nullable ? "Nullable" : "") + lookupDbType(column.dbType, convertDbTypeToColumnType),
28+
"modelName": dePluralise(StringUtils.capitalize(table.name)),
29+
"isIdentity": column.isIdentity.toString(),
2830
})
2931
.toList(),
3032
"modelName": dePluralise(StringUtils.capitalize(table.name)),
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
var column_subTemplate = """--inputs: dbType, dartType, columnName, nullable, tableName
22
3-
Column%%%columnType%%%<%%%dartType%%%> %%%columnName%%% = Column%%%columnType%%%<%%%dartType%%%>(
3+
Column%%%columnType%%%<%%%dartType%%%, %%%modelName%%%> %%%columnName%%% = Column%%%columnType%%%<%%%dartType%%%, %%%modelName%%%>(
44
name: "%%%columnName%%%",
55
nullable: %%%nullable%%%,
6+
isIdentity: %%%isIdentity%%%,
67
datatype: "%%%dbType%%%",
7-
getValue: (row) => row["%%%tableName%%%"]!["%%%columnName%%%"],
8+
getDbValue: (row) => row["%%%tableName%%%"]!["%%%columnName%%%"],
9+
getModelValue: (model) => model.%%%columnName%%%,
810
);
911
""";

easy_orm_cli/lib/templates/definition_template.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
var definition_template = """--inputs: className, tableName, columns as List<Column>, classOutputName
2+
// ignore_for_file: unused_import
23
import 'package:easy_orm_engine/column.dart';
34
import 'package:easy_orm_engine/ITableDefinition.dart';
45
import 'package:%%%packageName%%%/generatedDb/models/%%%modelName%%%.dart';
6+
import 'dart:typed_data';
57
6-
class %%%name%%%Definition implements ITableDefinition {
8+
class %%%name%%%Definition implements ITableDefinition<%%%modelName%%%> {
79
final String tableName = "%%%tableName%%%";
810
911
~~~columns|column_subTemplate~~~
@@ -15,5 +17,7 @@ class %%%name%%%Definition implements ITableDefinition {
1517
~~~propertySetColumns|propertySet_subTemplate~~~
1618
);
1719
}
20+
21+
String get insertIntoHeader => 'INSERT INTO %%%tableName%%%(%%%columnNamesDelimited%%%) VALUES';
1822
}
1923
""";

easy_orm_cli/lib/templates/model_template.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
var model_template = """--inputs: className, tableName, columns as List<Column>, classOutputName
2+
// ignore_for_file: unused_import
23
import 'package:freezed_annotation/freezed_annotation.dart';
4+
import 'dart:typed_data';
35
part '%%%modelName%%%.freezed.dart';
46
part '%%%modelName%%%.g.dart';
57
Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
1-
var service_template = """--inputs: className, modelName
1+
var service_template = """--inputs: packageName, name, modelName
22
import 'package:%%%packageName%%%/generatedDb/definitions/%%%name%%%Definition.dart';
33
import 'package:%%%packageName%%%/generatedDb/models/%%%modelName%%%.dart';
4-
import 'package:easy_orm_engine/IService.dart';
5-
import 'package:easy_orm_engine/clauseObjects/OrderBy.dart';
6-
import 'package:easy_orm_engine/clauseObjects/Select.dart';
7-
import 'package:easy_orm_engine/clauseObjects/Where.dart';
4+
import 'package:easy_orm_engine/service/IService.dart';
5+
import 'package:postgres/postgres.dart';
86
97
class %%%name%%%Service extends IService<%%%name%%%Definition, %%%modelName%%%> {
108
final %%%name%%%Definition tableDefinition = %%%name%%%Definition();
11-
final Where Function(%%%name%%%Definition e)? where;
12-
final Select<%%%name%%%Definition> Function(%%%name%%%Definition e)? select;
13-
final OrderBy Function(%%%name%%%Definition e)? orderBy;
9+
final PostgreSQLExecutionContext connection;
1410
15-
%%%name%%%Service({this.where, this.select, this.orderBy});
11+
%%%name%%%Service(PostgreSQLExecutionContext this.connection);
1612
}""";

0 commit comments

Comments
 (0)