from mysql_baseline import q,ROOT
import json
for db in ['zhct_stage','zhct2_stage']:
    result={}
    for section,fields,table,order in [
      ('tables','TABLE_NAME,ENGINE,ROW_FORMAT,AUTO_INCREMENT,TABLE_COLLATION','TABLES','TABLE_NAME'),
      ('columns','TABLE_NAME,COLUMN_NAME,ORDINAL_POSITION,DATA_TYPE,COLUMN_TYPE,IS_NULLABLE,NUMERIC_PRECISION,NUMERIC_SCALE,CHARACTER_MAXIMUM_LENGTH,DATETIME_PRECISION,COLLATION_NAME,EXTRA','COLUMNS','TABLE_NAME,ORDINAL_POSITION'),
      ('indexes','TABLE_NAME,INDEX_NAME,NON_UNIQUE,SEQ_IN_INDEX,COLUMN_NAME,COLLATION,SUB_PART,INDEX_TYPE','STATISTICS','TABLE_NAME,INDEX_NAME,SEQ_IN_INDEX'),
      ('constraints','TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE','TABLE_CONSTRAINTS','TABLE_NAME,CONSTRAINT_NAME')]:
        rows=q("SELECT "+fields+" FROM information_schema."+table+" WHERE TABLE_SCHEMA='"+db+"' ORDER BY "+order+';')
        result[section]=[dict(zip(fields.split(','),[None if v=='NULL' else v for v in row.split('\t')])) for row in rows]
    (ROOT/'private'/('metadata-'+db+'.json')).write_text(json.dumps(result,ensure_ascii=False,indent=2))
    col=result['columns']
    print(json.dumps({'database':db,'tables':len(result['tables']),'columns':len(col),'indexes':len({(i['TABLE_NAME'],i['INDEX_NAME']) for i in result['indexes']}),'floats':sorted(set(c['COLUMN_TYPE'] for c in col if c['DATA_TYPE']=='float')),'enums':sorted(set(c['COLUMN_TYPE'] for c in col if c['DATA_TYPE']=='enum')),'non_ci_collations':sorted(set(c['COLLATION_NAME'] for c in col if c['COLLATION_NAME'] and not c['COLLATION_NAME'].endswith('_ci')))},ensure_ascii=False))
