Ejemplo n.º 1
0
        public ColumnTypeDef ConvertTypeToColumnType(string typeString)
        {
            string tStr = typeString.ToLower();

            ColumnTypeDef typeDef = new ColumnTypeDef();

            switch (tStr)
            {
                case "blob":
                    typeDef.Type = ColumnType.Blob;
                    break;
                case "longblob":
                    typeDef.Type = ColumnType.LongBlob;
                    break;
                case "date":
                    typeDef.Type = ColumnType.Date;
                    break;
                case "datetime":
                    typeDef.Type = ColumnType.DateTime;
                    break;
                case "double":
                    typeDef.Type = ColumnType.Double;
                    break;
                case "float":
                    typeDef.Type = ColumnType.Float;
                    break;
                case "text":
                    typeDef.Type = ColumnType.Text;
                    break;
                case "mediumtext":
                    typeDef.Type = ColumnType.MediumText;
                    break;
                case "longtext":
                    typeDef.Type = ColumnType.LongText;
                    break;
                case "uuid":
                    typeDef.Type = ColumnType.UUID;
                    break;
                case "integer":
                    typeDef.Type = ColumnType.Integer;
                    typeDef.Size = 11;
                    break;
                default:
                    string regexInt = "^int\\((\\d+)\\)( unsigned)?$";
                    string regexTinyint = "^tinyint\\((\\d+)\\)( unsigned)?$";
                    string regexChar = "^char\\((\\d+)\\)$";
                    string regexString = "^varchar\\((\\d+)\\)$";

                    Dictionary<string, ColumnType> regexChecks = new Dictionary<string, ColumnType>(4);
                    regexChecks[regexInt] = ColumnType.Integer;
                    regexChecks[regexTinyint] = ColumnType.TinyInt;
                    regexChecks[regexChar] = ColumnType.Char;
                    regexChecks[regexString] = ColumnType.String;

                    Match type = Regex.Match("foo", "^bar$");
                    foreach (KeyValuePair<string, ColumnType> regexCheck in regexChecks)
                    {
                        type = Regex.Match(tStr, regexCheck.Key);
                        if (type.Success)
                        {
                            typeDef.Type = regexCheck.Value;
                            break;
                        }
                    }

                    if (type.Success)
                    {
                        typeDef.Size = uint.Parse(type.Groups[1].Value);
                        typeDef.unsigned = (typeDef.Type == ColumnType.Integer || typeDef.Type == ColumnType.TinyInt) ? (type.Groups.Count == 3 && type.Groups[2].Value == " unsigned") : false;
                        break;
                    }
                    else
                    {
                        throw new Exception("You've discovered some type that's not reconized by Aurora, please place the correct conversion in ConvertTypeToColumnType. Type: " + tStr);
                    }
            }

            return typeDef;
        }
Ejemplo n.º 2
0
 public abstract string GetColumnTypeStringSymbol(ColumnTypeDef coldef);
Ejemplo n.º 3
0
 public override string GetColumnTypeStringSymbol(ColumnTypeDef coldef)
 {
     string symbol;
     switch (coldef.Type)
     {
         case ColumnType.Blob:
         case ColumnType.LongBlob:
             symbol = "BLOB";
             break;
         case ColumnType.Boolean:
             symbol = "TINYINT(1)";
             break;
         case ColumnType.Char:
             symbol = "CHAR(" + coldef.Size + ")";
             break;
         case ColumnType.Date:
             symbol = "DATE";
             break;
         case ColumnType.DateTime:
             symbol = "DATETIME";
             break;
         case ColumnType.Double:
             symbol = "DOUBLE";
             break;
         case ColumnType.Float:
             symbol = "FLOAT";
             break;
         case ColumnType.Integer:
             if (!coldef.auto_increment)
             {
                 symbol = "INT(" + coldef.Size + ")";
             }
             else
             {
                 symbol = "INTEGER PRIMARY KEY AUTOINCREMENT";
             }
             break;
         case ColumnType.TinyInt:
             symbol = "TINYINT(" + coldef.Size + ")";
             break;
         case ColumnType.String:
             symbol = "VARCHAR(" + coldef.Size + ")";
             break;
         case ColumnType.Text:
         case ColumnType.MediumText:
         case ColumnType.LongText:
             symbol = "TEXT";
             break;
         case ColumnType.UUID:
             symbol = "CHAR(36)";
             break;
         default:
             throw new DataManagerException("Unknown column type.");
     }
     return symbol + (coldef.isNull ? " NULL" : " NOT NULL") + ((coldef.isNull && coldef.defaultValue == null) ? " DEFAULT NULL" : (coldef.defaultValue != null ? " DEFAULT '" + coldef.defaultValue.MySqlEscape() + "'" : ""));
 }
Ejemplo n.º 4
0
        public override bool Equals(object obj)
        {
            ColumnTypeDef foo = obj as ColumnTypeDef;

            return(foo != null && foo.Type.ToString() == Type.ToString() && foo.Size == Size && foo.defaultValue == defaultValue && foo.isNull == isNull && foo.unsigned == unsigned && foo.auto_increment == auto_increment);
        }
Ejemplo n.º 5
0
 protected ColumnDefinition ColDef(string name, ColumnTypes columnType)
 {
     ColumnTypeDef type = new ColumnTypeDef();
     switch (columnType)
     {
         case ColumnTypes.Blob:
             type.Type = ColumnType.Blob;
             break;
         case ColumnTypes.Char32:
             type.Type = ColumnType.Char;
             type.Size = 32;
             break;
         case ColumnTypes.Char36:
             type.Type = ColumnType.Char;
             type.Size = 36;
             break;
         case ColumnTypes.Char5:
             type.Type = ColumnType.Char;
             type.Size = 5;
             break;
         case ColumnTypes.Date:
             type.Type = ColumnType.Date;
             break;
         case ColumnTypes.DateTime:
             type.Type = ColumnType.DateTime;
             break;
         case ColumnTypes.Double:
             type.Type = ColumnType.Double;
             break;
         case ColumnTypes.Float:
             type.Type = ColumnType.Float;
             break;
         case ColumnTypes.Integer11:
             type.Type = ColumnType.Integer;
             type.Size = 11;
             break;
         case ColumnTypes.Integer30:
             type.Type = ColumnType.Integer;
             type.Size = 30;
             break;
         case ColumnTypes.LongBlob:
             type.Type = ColumnType.LongBlob;
             break;
         case ColumnTypes.LongText:
             type.Type = ColumnType.LongText;
             break;
         case ColumnTypes.MediumText:
             type.Type = ColumnType.MediumText;
             break;
         case ColumnTypes.String:
             type.Type = ColumnType.Text;
             break;
         case ColumnTypes.String1:
             type.Type = ColumnType.String;
             type.Size = 1;
             break;
         case ColumnTypes.String10:
             type.Type = ColumnType.String;
             type.Size = 10;
             break;
         case ColumnTypes.String100:
             type.Type = ColumnType.String;
             type.Size = 100;
             break;
         case ColumnTypes.String1024:
             type.Type = ColumnType.String;
             type.Size = 1024;
             break;
         case ColumnTypes.String128:
             type.Type = ColumnType.String;
             type.Size = 128;
             break;
         case ColumnTypes.String16:
             type.Type = ColumnType.String;
             type.Size = 16;
             break;
         case ColumnTypes.String2:
             type.Type = ColumnType.String;
             type.Size = 2;
             break;
         case ColumnTypes.String255:
             type.Type = ColumnType.String;
             type.Size = 255;
             break;
         case ColumnTypes.String30:
             type.Type = ColumnType.String;
             type.Size = 30;
             break;
         case ColumnTypes.String32:
             type.Type = ColumnType.String;
             type.Size = 32;
             break;
         case ColumnTypes.String36:
             type.Type = ColumnType.String;
             type.Size = 36;
             break;
         case ColumnTypes.String45:
             type.Type = ColumnType.String;
             type.Size = 45;
             break;
         case ColumnTypes.String50:
             type.Type = ColumnType.String;
             type.Size = 50;
             break;
         case ColumnTypes.String512:
             type.Type = ColumnType.String;
             type.Size = 512;
             break;
         case ColumnTypes.String64:
             type.Type = ColumnType.String;
             type.Size = 64;
             break;
         case ColumnTypes.String8196:
             type.Type = ColumnType.String;
             type.Size = 8196;
             break;
         case ColumnTypes.Text:
             type.Type = ColumnType.Text;
             break;
         case ColumnTypes.TinyInt1:
             type.Type = ColumnType.TinyInt;
             type.Size = 1;
             break;
         case ColumnTypes.TinyInt4:
             type.Type = ColumnType.TinyInt;
             type.Size = 4;
             break;
         default:
             type.Type = ColumnType.Unknown;
             break;
     }
     return new ColumnDefinition {Name = name, Type = type};
 }