uklance / tader Goto Github PK
View Code? Open in Web Editor NEWA tool to quickly insert relational test data by generating the stuff you don't care about
A tool to quickly insert relational test data by generating the stuff you don't care about
Extract logic from GraterModelImpl
into GraterModelSource
Add duplicate table / column validation to GraterModelSourceImpl
Add getReferenceTable
to ForeignKey
Create a GraterBuilder
Export Schema
to file
Import Schema
from file
Refactor TableRow
into PartialEntity
and Entity
Currently, the generated key logic is a bit silly. It simply states to use Statement.RETURN_GENERATED_KEYS
and can only return a single generated value. Ie it currently uses:
Connection.prepareStatement(String sql, int autoGeneratedKeys)
This should be improved and should use either
prepareStatement(String sql, int[] columnIndexes)
or
prepareStatement(String sql, String[] columnNames)
Then we can populate more than one database generated value per insert
Provide a hook for contributions to access services
TaderBuilder
should use simple-ioc under the hood
// hard code name and dob, generate the rest
def user1 = insert "user" [name:"user1", dob:"1/1/2000"]
def user2 = insert "user" [name:"user2", dob:"1/1/1980"]
def user3 = insert "user" [name:"user3", dob:"1/1/1980"]
// hard code name and user (foreign key) and generate the rest
def item1 = insert "item" [name:"item1", user:user1]
// hard code name and generate the rest. User (foreign key) will be generated
def item2 = insert "item" [name:"item2"]
def generatedUser = item2.user
// select and selectAll
def user1 = select "user" [name:"user1"]
List users = selectAll "user" [dob:"1/1/1980"]
// update and updateAll
user1.name = "user1a"
update user1
// delete and deleteAll
boolean deleted = delete "user" [name:"user1"]
int deleteCount = deleteAll "user" [dob:"1/1/1980"]
class Schema {
Table[] tables;
}
class Table {
String namespace;
String name;
PrimaryKey primaryKey;
ForeignKey[] foreignKeys;
Column[] columns;
}
class Column {
String name;
Type type;
boolean nullable;
int scale;
int precision;
}
class SchemaModel {
Map<String Table> tables;
Map<String, Map<String, Column>> columns;
List<Table> tableCreationOrder;
// this can as a suffix on generated values
int getNextIncrement(Table table);
// convert dsl value to db value
ValueParser getValueParser(Table table, Column column, Object value, String prefix);
ValueParser getDefaultValueParser(Type type, Object value, String prefix);
// generate value not provided by user in dsl prior to insert
ValueGenerator getValueGenerator(Table table, Column column);
ValueGenerator getNullableValueGenerator(Table table, Column column);
ValueGenerator getDefaultValueGenerator(Type type);
ValueGenerator getDefaultNullableValueGenerator(Type type);
// convert db value to value in dsl
ValueConverter getValueConverter(Table table, Column column);
ValueConverter getDefaultValueConverter(Type type);
}
interface Grater {
Entity insert(String table, Map fields);
<T extends Entity> insert(Class<T> type, Map fields);
<T extends Entity> T insert(T fields);
boolean delete(String table, Object pk);
boolean delete(Entity entity);
int deleteAll(String table, Map fields);
int deleteAll(Entity fields);
}
interface Entity extends Serializable { ... }
interface ValueGenerator {
Object generateValue(Table table, Column column, IncrementProvider incProvider);
}
interface ValueParser {
Object parseValue(Table table, Column column, Object value);
}
interface ValueConverter {
Object convert(Table table, Column column, ResultSet resultSet);
}
interface SchemaSource {
Schema getSchema();
}
interface SchemaMerger {
Schema merge(Schema[] schemas, MergeMode mode);
}
enum MergeMode { OVERRIDE, IGNORE }
interface SchemaExporter {
void export(Schema schema);
}
class JdbcSchemaSource implements SchemaSource {
String url, className, user, password, schema;
String[] includes;
String[] excludes;
}
class XMLSchemaSource implements SchemaSource { ... }
class JSONSchemaSource implements SchemaSource { ... }
class XMLSchemaExporter implements SchemaExporter { ... }
class JSONSchemaExporter implements SchemaExporter { ... }
class IdentityValueParser implements ValueParser { ... }
Export Schema
from DataSource
Export Schema
from hibernate entities
Support for different dialects (enum)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.