Пример #1
0
 public override void Visit(ParameterlessCall node) { this.action(node); }
Пример #2
0
        public static Field GetField(
            this ParameterlessCall parameterlessCall,
            string columnName,
            ILogger logger,
            SchemaFile file
            )
        {
            switch (parameterlessCall.ParameterlessCallType)
            {
            case ParameterlessCallType.User:
                return(new StringField()
                {
                    Name = columnName ?? "USER",
                    Type = FieldType.String, // CHAR
                    Origin = OriginType.SystemType,
                    Length = 0,              // TODO
                    IsNullable = false,
                });

            case ParameterlessCallType.CurrentUser:
                // this is the SYSNAME type
                return(new StringField()
                {
                    Name = columnName,
                    Type = FieldType.String,     // NVARCHAR
                    Origin = OriginType.SystemType,
                    Length = 128,
                    IsNullable = false,
                });

            case ParameterlessCallType.SessionUser:
                return(new StringField()
                {
                    Name = columnName ?? "SESSION_USER",
                    Type = FieldType.String,     // NVARCHAR
                    Origin = OriginType.SystemType,
                    Length = 128,
                    IsNullable = false,
                });

            case ParameterlessCallType.SystemUser:
                return(new StringField()
                {
                    Name = columnName ?? "SYSTEM_USER",
                    Type = FieldType.String, // NCHAR
                    Origin = OriginType.SystemType,
                    Length = 0,              // TODO
                    IsNullable = false,
                });

            case ParameterlessCallType.CurrentTimestamp:
                return(new DefaultField()
                {
                    Name = columnName ?? "CURRENT_TIMESTAMP",
                    Type = FieldType.DateTime,
                    Origin = OriginType.SystemType,
                    IsNullable = false,
                });

            default:
                logger.Log(LogLevel.Warning,
                           LogType.NotSupportedYet,
                           file.Path,
                           $"Unable to determine column type from parameterless call. Fragment: \"{parameterlessCall.GetTokenText()}\"");
                return(new UnknownField()
                {
                    Name = columnName
                });
            }
        }
 public override void ExplicitVisit(ParameterlessCall fragment)
 {
     _fragments.Add(fragment);
 }
        public override void ExplicitVisit(ParameterlessCall node)
        {
            base.ExplicitVisit(node);

            ParameterlessCalls.Add(node);
        }