def randomNumber_exists_if_required(context): field = context["field"] if (field["settings"]["dataType"]["dataType"] == "randomNumber" and "randomNumber" not in field["settings"]["dataType"]): raise exceptions.BadSpecificationError( "randomNumber missing from " + context_str(context) + ", " + "dispite dataType being 'randomNumber'")
def foreignKeyParams_exists_if_required(context): field = context["field"] if (field["settings"]["keySettings"]["foreignKey"] is True and "foreignKeyParams" not in field["settings"]["keySettings"]): raise exceptions.BadSpecificationError( "foreignKeyParams missing from " + context_str(context) + ", " + "dispite foreignKey being True")
def numberSequence_exists_if_required(context): field = context["field"] if (field["settings"]["dataType"]["dataType"] == "numberSequence" and "numberSequence" not in field["settings"]["dataType"]): raise exceptions.BadSpecificationError( "numberSequence missing from " + context_str(context) + ", " + "dispite dataType being 'numberSequence'")
def one_primaryKey_per_table(context): table = context["table"] num_pkeys = 0 for field in table["fields"]: if field["settings"]["keySettings"]["primaryKey"] is True: num_pkeys += 1 if num_pkeys > 2: break # Short-circuit - validation has already failed if num_pkeys == 0: raise exceptions.BadSpecificationError("no primaryKey defined in " + context_str(context) + " (one required)") elif num_pkeys > 1: raise exceptions.BadSpecificationError( "multiple primaryKeys defined in " + context_str(context) + " " + "(one required)")
def randomNumber_start_le_end(context): field = context["field"] # Otherwise, this validation step is not applicable if (field["settings"]["dataType"]["dataType"] == "randomNumber"): randomNumber_spec = field["settings"]["dataType"]["randomNumber"] if (randomNumber_spec["start"] > randomNumber_spec["end"]): raise exceptions.BadSpecificationError( "start must be less than end in randomNumber parameters in " + context_str(context))
def foreignKeyParams_references_exist(context): spec = context["generate-spec"] cur_field = context["field"] if cur_field["settings"]["keySettings"]["foreignKey"] is True: # Foreign Key Params fkp = cur_field["settings"]["keySettings"]["foreignKeyParams"] tables = spec["tables"] if (find(tables, lambda table: table["name"] == fkp["table"]) is None): raise exceptions.BadSpecificationError( "table '" + fkp["table"] + "' referenced by foreign key in " + context_str(context) + " does not exist") table = find(tables, lambda table: table["name"] == fkp["table"]) fields = table["fields"] if (find(fields, lambda field: field["name"] == fkp["field"]) is None): raise exceptions.BadSpecificationError( "field '" + fkp["field"] + "' referenced by foreign key " + context_str(context) + " does not exist")
def loopingSequenceParams_exists_if_required(context): field = context["field"] data_type_spec = field["settings"]["dataType"] if (data_type_spec["dataType"] == "numberSequence" and data_type_spec["numberSequence"]["sequenceType"] == "looping" and "loopingSequenceParams" not in data_type_spec["numberSequence"]): raise exceptions.BadSpecificationError( "loopingSequenceParams missing from " + context_str(context) + ", " + "dispite sequenceType being 'looping'")