public TemplateResult GetTemplate(QueryInput input) { var assmName = Guid.NewGuid().ToIdentifierWithPrefix("a"); var schemaSrc = _schemaService.GetSchemaSource(input.ConnectionString, assmName, withUsings: false); var src = _template .Replace("##NS##", assmName) .Replace("##DB##", "Proxy"); var srcToken = "##SOURCE##"; var regex = new Regex(@"$", RegexOptions.Multiline); var srcIdx = src.IndexOf(srcToken); var srcOffset = src.Substring(0, srcIdx); var ms = regex.Matches(srcOffset); src = src + schemaSrc; var fullSrc = src.Replace(srcToken, ""); var header = src.Substring(0, srcIdx); var footer = src.Substring(srcIdx + srcToken.Length); Console.WriteLine("regex matches", ms.Count); // the usage of the template should not require mapping the column value return(new TemplateResult { Template = fullSrc, Header = header, Footer = footer, Namespace = assmName, ColumnOffset = 0, LineOffset = ms.Count // todo magic bullshit }); }
/// <summary> /// Returns the database context for the given connection string, /// optionally loading and compiling the types if missing. /// </summary> public CompileResult GetDatabaseContext(string connectionString) { if (!_map.ContainsKey(connectionString)) { var assmName = Guid.NewGuid().ToIdentifierWithPrefix("a"); var schemaSrc = _schemaService.GetSchemaSource(connectionString, assmName); var result = _compileService.LoadType(schemaSrc, assmName); _map.Add(connectionString, result); } return(_map[connectionString]); }