# so i need something that i can input a Model and get DAO stg. model = ''' public class sharedLink { private String sharedLinkId; # varchar(40) nn pk private String companyId; # varchar(40) nn private long generatedAt; # bigint 0 private int quota; } ''' tableName = model.find('class ____ {') cols = [] colPk = None fields = model.find(' _____; #_________') for name, desc in fields: colType = None nn = False default = None for a in desc.split(' '): if not colType: colType = a continue if a == 'nn': nn = True try: int(a) except: pass else: default = a statement = '%s %s'%(name, colType.upper()) if nn: statement += ' NOT NULL' if default: statement += ' DEFAULT %s'%default group = {'name': name, 'statement': statement, 'pk': pk, 'key': key} if pk: colPk = group cols.append(group) sql = 'group %s\n\n'%name.title() sql += '''createTable() ::= << CREATE TABLE IF NOT EXISTS %s ('''%tableName for col in cols: sql += '\n%s,' % col['statement'] for col in cols: if col['pk']: sql += '\nPRIMARY KEY (%s),'%col['name'] if col['key']: sql += '\n KEY (%s),'%col['name'] sql = sql[:-1] # remove comma sql += ''' )ENGINE=ndbcluster DEFAULT CHARSET=utf8; >> ''' for col in cols: if col['pk'] or col['key']: sql += 'findBy%s() ::= <<'%col['name'].title() sql += '\nSELECT %s FROM %s WHERE %s = :%s' %(', '.join([c['name'] for c in cols]), tableName, col['name'], col['name']) sql += '\n>>\n\n' sql += 'findAll() ::= <<\n' sql += '\nSELECT %s FROM %s WHERE %s = :%s' %(', '.join([c['name'] for c in cols]), tableName, col['name'], col['name']) sql += '\n>>\n\n' sql += 'create() ::= <<\n' sql += 'INSERT INTO %s ( %s ) values ( %s )'%(tableName, ', '.join([c['name'] for c in cols]), ', '.join([':%s'%c['name'] for c in cols])) sql += '>>\n\n' sql += 'update() ::= <<\n' sql += 'UPDATE %s SET %s WHERE %s = :%s'%(tableName, ', '.join(['%s = :%s'%(c['name'], c['name']) for c in cols]), colPk['name'], colPk['name']) sql += '>>\n\n' sql += 'destroy() ::= <<\n' sql += 'UPDATE %s SET %s WHERE %s = :%s'%(tableName, ', '.join(['%s = :%s'%(c['name'], c['name']) for c in cols]), colPk['name'], colPk['name']) sql += '>>\n\n' print sql ''' group SharedLinkDAO; createSharedLinkTable() ::= << CREATE TABLE IF NOT EXISTS sharedLinkDAO ( linkId VARCHAR(40) NOT NULL, companyId VARCHAR(40) NOT NULL, creatorUserId VARCHAR(40) NOT NULL, creatorUsername VARCHAR(64) NOT NULL, driveId VARCHAR(40) NOT NULL, path VARCHAR(512) NOT NULL, generatedAt BIGINT DEFAULT 0, expiresAt BIGINT DEFAULT 0, quota INT DEFAULT 0, bcrypt VARCHAR(60) NOT NULL, disabled INT DEFAULT 0, PRIMARY KEY (linkId), KEY companyId (companyId), KEY creatorUserId (creatorUserId), KEY driveId (driveId), KEY path (path), KEY generatedAt (generatedAt) )ENGINE=ndbcluster DEFAULT CHARSET=utf8; >> findById() ::= << SELECT linkId, companyId, creatorUserId, creatorUsername, driveId, path, generatedAt, expiresAt, quota, bcrypt, disabled FROM sharedLinkDAO WHERE linkId = :linkId >> findByCreatorUserId() ::= << SELECT linkId, companyId, creatorUserId, creatorUsername, driveId, path, generatedAt, expiresAt, quota, bcrypt, disabled FROM sharedLinkDAO WHERE creatorUserId = :creatorUserId ORDER BY generatedAt DESC; >> findByCompanyId() ::= << SELECT linkId, companyId, creatorUserId, creatorUsername, driveId, path, generatedAt, expiresAt, quota, bcrypt, disabled FROM sharedLinkDAO WHERE companyId = :companyId ORDER BY generatedAt DESC; >> findByCompanyIdAndCreationTime() ::= << SELECT linkId, companyId, creatorUserId, creatorUsername, driveId, path, generatedAt, expiresAt, quota, bcrypt, disabled FROM sharedLinkDAO WHERE companyId = :companyId AND generatedAt >= :generatedAtGTE AND generatedAt <= :generatedAtLTE ORDER BY generatedAt DESC; >> create() ::= << INSERT INTO sharedLinkDAO (linkId, companyId, creatorUserId, creatorUsername, driveId, path, generatedAt, expiresAt, quota, bcrypt, disabled ) values (:linkId, :companyId, :creatorUserId, :creatorUsername, :driveId, :path, :generatedAt, :expiresAt, :quota, :bcrypt, :disabled) >> update() ::= << UPDATE sharedLinkDAO SET companyId = :companyId, creatorUserId = :creatorUserId, creatorUsername = :creatorUsername, driveId = :driveId, path = :path, generatedAt = :generatedAt, expiresAt = :expiresAt, quota = :quota, bcrypt = :bcrypt, disabled = :disabled WHERE linkId = :linkId >> findAll() ::= << SELECT linkId, companyId, creatorUserId, creatorUsername, driveId, path, generatedAt, expiresAt, quota, bcrypt, disabled FROM sharedLinkDAO >> '''
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question