public async Task <IActionResult> PostProceduresAsync([FromBody] CreateProcedureRequest createProcedureRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Model is invalid"));
            }

            var model = _mapper.Map <ProcedureModel>(createProcedureRequest);
            await _procedureRepository.InsertAsync(model);

            var response = _mapper.Map <CreateProcedureResponse>(model);

            return(Ok(response));
        }
예제 #2
0
        public void Initialize(string connectionString)
        {
            Requests = new RequestProcessor(connectionString);

            var types = Assembly.GetCallingAssembly().DefinedTypes;

            foreach (var type in types)
            {
                if (type.GetCustomAttribute(typeof(DataModelAttribute)) != null)
                {
                    Mapper.Map(type);
                }
            }

            Requests.Initialize();

            var prepareRequest = new SqlRequest("IF EXISTS(SELECT* FROM sys.objects WHERE object_id = OBJECT_ID(N'DatabaseHealthCheck') AND type in (N'P', N'PC')) " +
                                                "DROP PROCEDURE DatabaseHealthCheck;");
            var healthCheckRequest = new CreateProcedureRequest(@"
            SELECT  @@ServerName AS ServerName ,
                    DB_NAME() AS DBName ,
                    OBJECT_NAME(ddius.object_id) AS TableName ,
                    SUM(ddius.user_seeks + ddius.user_scans + ddius.user_lookups) AS  Reads ,
                    SUM(ddius.user_updates) AS Writes ,
                    SUM(ddius.user_seeks + ddius.user_scans + ddius.user_lookups
                        + ddius.user_updates) AS [Reads&Writes] ,
                    ( SELECT    DATEDIFF(s, create_date, GETDATE()) / 86400.0
                      FROM      master.sys.databases
                      WHERE     name = 'tempdb'
                    ) AS SampleDays ,
                    ( SELECT    DATEDIFF(s, create_date, GETDATE()) AS SecoundsRunnig
                      FROM      master.sys.databases
                      WHERE     name = 'tempdb'
                    ) AS SampleSeconds
            FROM    sys.dm_db_index_usage_stats ddius
                    INNER JOIN sys.indexes i ON ddius.object_id = i.object_id
                                                 AND i.index_id = ddius.index_id
            WHERE    OBJECTPROPERTY(ddius.object_id, 'IsUserTable') = 1
                    AND ddius.database_id = DB_ID()
            GROUP BY OBJECT_NAME(ddius.object_id)
            ORDER BY [Reads&Writes] DESC;
            ", "DatabaseHealthCheck");

            Requests.Execute(prepareRequest);
            Requests.Execute(healthCheckRequest);
        }