Files
linqpad/cci tables.linq

121 lines
4.7 KiB
C#

<Query Kind="Statements">
<Connection>
<ID>77b65bea-e766-4e3c-a1ed-c4c2534b6019</ID>
<Persist>true</Persist>
<Server>D0001-SQL-11.sdt.local</Server>
<Database>jazz dev master Prod</Database>
<ShowServer>true</ShowServer>
</Connection>
<Reference>&lt;ProgramFilesX64&gt;\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\plugins\Diagnostics\Newtonsoft.Json.dll</Reference>
<NuGetReference>Amazon.Lambda.S3Events</NuGetReference>
<NuGetReference>AWSSDK.Core</NuGetReference>
<NuGetReference>AWSSDK.S3</NuGetReference>
<Namespace>Amazon</Namespace>
<Namespace>Amazon.Auth.AccessControlPolicy</Namespace>
<Namespace>Amazon.Auth.AccessControlPolicy.ActionIdentifiers</Namespace>
<Namespace>Amazon.Internal</Namespace>
<Namespace>Amazon.Lambda.S3Events</Namespace>
<Namespace>Amazon.MissingTypes</Namespace>
<Namespace>Amazon.Runtime</Namespace>
<Namespace>Amazon.Runtime.CredentialManagement</Namespace>
<Namespace>Amazon.Runtime.CredentialManagement.Internal</Namespace>
<Namespace>Amazon.Runtime.EventStreams</Namespace>
<Namespace>Amazon.Runtime.EventStreams.Internal</Namespace>
<Namespace>Amazon.Runtime.Internal</Namespace>
<Namespace>Amazon.Runtime.Internal.Auth</Namespace>
<Namespace>Amazon.Runtime.Internal.Settings</Namespace>
<Namespace>Amazon.Runtime.Internal.Transform</Namespace>
<Namespace>Amazon.Runtime.Internal.Util</Namespace>
<Namespace>Amazon.Runtime.SharedInterfaces</Namespace>
<Namespace>Amazon.Runtime.SharedInterfaces.Internal</Namespace>
<Namespace>Amazon.S3</Namespace>
<Namespace>Amazon.S3.Encryption</Namespace>
<Namespace>Amazon.S3.Encryption.Internal</Namespace>
<Namespace>Amazon.S3.Internal</Namespace>
<Namespace>Amazon.S3.IO</Namespace>
<Namespace>Amazon.S3.Model</Namespace>
<Namespace>Amazon.S3.Model.Internal.MarshallTransformations</Namespace>
<Namespace>Amazon.S3.Transfer</Namespace>
<Namespace>Amazon.S3.Util</Namespace>
<Namespace>Amazon.Util</Namespace>
<Namespace>Amazon.Util.Internal</Namespace>
<Namespace>Amazon.Util.Internal.PlatformServices</Namespace>
<Namespace>Newtonsoft.Json</Namespace>
<Namespace>Newtonsoft.Json.Converters</Namespace>
<Namespace>Newtonsoft.Json.Linq</Namespace>
<Namespace>Newtonsoft.Json.Schema</Namespace>
<Namespace>Newtonsoft.Json.Serialization</Namespace>
<Namespace>System</Namespace>
<Namespace>System.Diagnostics</Namespace>
<Namespace>System.Diagnostics.Tracing</Namespace>
<Namespace>System.IO.Compression</Namespace>
<Namespace>ThirdParty.BouncyCastle.Asn1</Namespace>
<Namespace>ThirdParty.BouncyCastle.Asn1.Utilities</Namespace>
<Namespace>ThirdParty.BouncyCastle.Math</Namespace>
<Namespace>ThirdParty.BouncyCastle.OpenSsl</Namespace>
<Namespace>ThirdParty.BouncyCastle.Utilities.IO.Pem</Namespace>
<Namespace>ThirdParty.Ionic.Zlib</Namespace>
<Namespace>ThirdParty.Json.LitJson</Namespace>
<Namespace>ThirdParty.MD5</Namespace>
</Query>
var important = new[] {
"CaseTypeEntity",
"CaseTypeFamilyMetrics",
"ChargeCaptureMetricGoal",
"ChargeCodeConfig",
"ChargeCodeCostDetail",
"ClinicalGrowthMetricGoal",
"Configuration",
"CustomOppMetricLink",
"CustomOpportunity",
"DepartmentPatientADT",
"DepartmentPatientCensus",
"DepartmentPatientDailyCensus",
"DepartmentPatientHourlyADTCensus",
"DepartmentPatientHourlyCensus",
"DepartmentStaffHourlyCensus",
"DirectCostMetricGoal",
"EmployeeWorkedHours",
"FactMetric",
"FactOpportunityMetric",
"FactOpportunitySavings",
"FreeFormInitiativeTrackingData",
"FreeFormOpportunity",
"GLDepartment",
"GLOpportunity",
"Initiative",
"InitiativeComment",
"InitiativeCriteria",
"InitiativeScore",
"InitiativeWorkflowHistory",
"FactPatientEncounterSummary",
"VariationEncounterSaving",
"VariationEncounterSavingInfo"};
var tables = ExecuteQueryDynamic(@"SELECT c.TABLE_NAME,
c.COLUMN_NAME,
c.ORDINAL_POSITION,
c.DATA_TYPE,
CASE c.IS_NULLABLE WHEN 'no' THEN 'not null' ELSE '' END [Nullability],
CASE WHEN c.COLUMN_DEFAULT IS NULL THEN '' ELSE c.COLUMN_DEFAULT END COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS AS c
INNER JOIN INFORMATION_SCHEMA.TABLES t ON c.TABLE_NAME = t.TABLE_NAME AND t.TABLE_TYPE = 'BASE TABLE'
WHERE c.TABLE_SCHEMA = 'cci' AND c.TABLE_CATALOG = 'jazz dev master Prod'
ORDER BY c.TABLE_NAME, c.ORDINAL_POSITION")
.Select(t => new
{
table = t.TABLE_NAME as string,
column = t.COLUMN_NAME as string,
position = t.ORDINAL_POSITION as int?,
dataType = t.DATA_TYPE as string,
nullability = t.Nullability as string,
columnDefault = t.COLUMN_DEFAULT as string
}).ToList();
tables
.Where(t => !important.Contains(t.table))
.GroupBy(t => t.table, (g, d) => d.OrderBy(c => c.position))
.ToList()
.ForEach(x =>
{
x.Select(t => new { t.column, t.dataType, t.nullability, t.columnDefault }).Dump(x.First().table);
});