public void AddGraphTypeFields(QueryCore queryCore) { queryCore.FieldAsync <IdentityModelType>(name: "authRequired", description: null, resolve: async context => { try { var userContext = context.UserContext.As <GraphQLUserContext>(); var result = new GraphQLCore.ExtensionGrants.Models.IdentityModel { Claims = new List <ClaimHandle>() }; foreach (var claim in userContext.HttpContextAccessor.HttpContext.User.Claims) { result.Claims.Add(new ClaimHandle() { Name = claim.Type, Value = claim.Value }); } return(result); } catch (Exception e) { } return(null); // return await Task.Run(() => { return ""; }); }, deprecationReason: null); }
public override bool Compile(string queryText, QueryCore query, TempFileRef dataContextAssembly) { bool flag; StringBuilder builder = new StringBuilder(this.GetHeader(query)); base.LineOffset = builder.ToString().Count <char>(c => c == '\n'); builder.AppendLine(Regex.Replace(queryText.Trim(), "(?<!\r)\n", "\r\n")); builder.Append(this.GetFooter(query)); string str = "v4.0"; Dictionary <string, string> providerOptions = new Dictionary <string, string>(); providerOptions.Add("CompilerVersion", str); VBCodeProvider codeProvider = new VBCodeProvider(providerOptions); if ((!(flag = base.Compile(codeProvider, builder.ToString(), dataContextAssembly, query.QueryKind, this.GetCompilerOptions(query))) && (query.QueryKind == QueryLanguage.VBExpression)) && (base.ErrorMessage == ") expected")) { base.ErrorMessage = ") or end of expression expected"; return(flag); } if (!(flag || !base.ErrorMessage.ToLowerInvariant().Contains("predicatebuilder"))) { base.ErrorMessage = base.ErrorMessage + QueryCompiler.PredicateBuilderMessage; return(flag); } if (!(((flag || (query.QueryKind != QueryLanguage.VBStatements)) || !(base.ErrorMessage == "Expression is not a method.")) || query.Source.TrimStart(new char[0]).StartsWith("dim", StringComparison.OrdinalIgnoreCase))) { base.ErrorMessage = base.ErrorMessage + "\r\n(Try setting the query language to 'VB Expression' rather than 'VB Statements')"; return(flag); } if ((!flag && (query.QueryKind == QueryLanguage.VBExpression)) && (base.ErrorMessage == "Expression expected.")) { base.ErrorMessage = base.ErrorMessage + "\r\n(Set the query language to 'VB Statement(s)' for a statement-based code)"; } return(flag); }
public void AddGraphTypeFields(QueryCore queryCore) { queryCore.FieldAsync <ArbitraryNoSubjectResultType>(name: GrantType, description: $"mints a custom {GrantType} token.", arguments: new QueryArguments(new QueryArgument <NonNullGraphType <ArbitraryNoSubjectInput> > { Name = "input" }), resolve: async context => { try { var userContext = context.UserContext.As <GraphQLUserContext>(); var input = context.GetArgument <ArbitraryNoSubjectInputHandle>("input"); var formValues = new Dictionary <string, StringValues>() { { "grant_type", GrantType }, { "client_id", input.client_id }, { "client_secret", input.client_secret }, { "scope", input.scope }, { "arbitrary_claims", input.arbitrary_claims } }; if (!string.IsNullOrWhiteSpace(input.arbitrary_amrs)) { formValues.Add("arbitrary_amrs", input.arbitrary_amrs); } if (!string.IsNullOrWhiteSpace(input.arbitrary_audiences)) { formValues.Add("arbitrary_audiences", input.arbitrary_audiences); } if (input.access_token_lifetime > 0) { formValues.Add("access_token_lifetime", input.access_token_lifetime.ToString()); } IFormCollection formCollection = new FormCollection(formValues); var processsedResult = await _endpointHandlerExtra.ProcessRawAsync(formCollection); if (processsedResult.TokenErrorResult != null) { context.Errors.Add(new ExecutionError($"{processsedResult.TokenErrorResult.Response.Error}:{processsedResult.TokenErrorResult.Response.ErrorDescription}")); return(null); } var result = new ArbitraryNoSubjectResult { access_token = processsedResult.TokenResult.Response.AccessToken, expires_in = processsedResult.TokenResult.Response.AccessTokenLifetime, token_type = "bearer" }; return(result); } catch (Exception e) { context.Errors.Add(new ExecutionError("Unable to process request", e)); } return(null); }, deprecationReason: null); }
public void AddGraphTypeFields(QueryCore queryCore) { queryCore.FieldAsync <BindResultType>(name: "bind", description: "Given a type of token, we will exchange it for an oAuth2 token to access this service.", arguments: new QueryArguments(new QueryArgument <NonNullGraphType <BindInput> > { Name = "input" }), resolve: async context => { try { var userContext = context.UserContext.As <GraphQLUserContext>(); var input = context.GetArgument <BindInputHandle>("input"); var result = await _bindStore.BindAsync(input.Type, input.Token); return(result); } catch (Exception e) { context.Errors.Add(new ExecutionError("Unable to bind with giving input")); } return(null); // return await Task.Run(() => { return ""; }); }, deprecationReason: null); }
internal void UpdateSelection(QueryCore query) { this._selectedQuery = query; if (((query == null) || query.Predefined) || (query.FilePath.Length == 0)) { if (base.SelectedNode != null) { base.SelectedNode = null; } } else if ((this._myExtensionsNode != null) && (query.FilePath == this._myExtensionsNode.FilePath)) { base.SelectedNode = this._myExtensionsNode; } else if (!this._fileNodes.ContainsKey(query.FilePath)) { FileNode node = this.FindQueryByPath(query.FilePath); if (node != base.SelectedNode) { base.SelectedNode = node; } } else { FileNode node2 = this._fileNodes[query.FilePath]; if (node2 != base.SelectedNode) { base.SelectedNode = node2; } } }
public void AddGraphTypeFields(QueryCore queryCore) { queryCore.FieldAsync <PublishStateModelType>(name: "publishState", description: $"Fetches current state.", resolve: async context => { // Authorization worked, but who is calling us var graphQLUserContext = context.UserContext as GraphQLUserContext; var principal = graphQLUserContext.HttpContextAccessor.HttpContext.User; // Since this is a B2B api, there probably will not be a subject, hence no real user // What we have here is an organization, so we have to find out the clientId, and the client_namespace var authContext = principal.ToAuthContext(); var requestedFields = (from item in context.SubFields select item.Key).ToList(); var result = await _b2bPublisherStore.GetPublishStateAsync( authContext, new Contracts.Models.RequestedFields { Fields = requestedFields }); return(result); }, deprecationReason: null); }
public void AddGraphTypeFields(QueryCore queryCore) { var fieldType = queryCore.FieldAsync <HumanType>( name: "human", description: null, arguments: new QueryArguments(new QueryArgument <NonNullGraphType <StringGraphType> > { Name = "id", Description = "id of the human" }), resolve: async context => { try { var userContext = context.UserContext.As <GraphQLUserContext>(); var human = await _starWarsData.GetHumanByIdAsync(context.GetArgument <string>("id")); return(human); } catch (Exception e) { } return(null); // return await Task.Run(() => { return ""; }); }, deprecationReason: null); }
public void AddGraphTypeFields(QueryCore queryCore) { queryCore.FieldAsync <StringGraphType>( "dogName2", resolve: async context => await DogNameAsync() ); }
public void Dispose() { lock (this._locker) { if (!this._isDisposed) { this._isDisposed = true; this.ReadLineRequested = null; this.QueryCompiled = null; this.QueryCompleted = null; this.PluginsReady = null; this.CustomClickComplete = null; this._executionProgress = LINQPad.ExecutionModel.ExecutionProgress.Finished; this._cancelRequest = true; this.ClearServer(); this._query = null; this._source = null; try { RemotingServices.Disconnect(this); } catch { } } } }
public void AddGraphTypeFields(QueryCore queryCore) { queryCore.Field <IdentityModelType>(name: "authRequired", description: null, resolve: Resolver, deprecationReason: null); }
public void AddGraphTypeFields(QueryCore queryCore) { var fieldName = "subscription"; var fieldType = queryCore.FieldAsync <SubscriptionDocumentType>(name: fieldName, description: null, arguments: new QueryArguments(new QueryArgument <NonNullGraphType <SubscriptionQueryInput> > { Name = "input" }), resolve: async context => { try { var userContext = context.UserContext.As <GraphQLUserContext>(); var input = context.GetArgument <SubscriptionQueryHandle>("input"); var result = new SubscriptionDocumentHandle { Value = new SomeData() { SubscriptionQueryHandle = input, Ted = "Well Hellow" }, Id = input.Id, MetaData = input.MetaData }; return(result); } catch (Exception e) { } return(null); // return await Task.Run(() => { return ""; }); }, deprecationReason: null); }
public void AddGraphTypeFields(QueryCore queryCore) { queryCore.FieldAsync <DiscoveryResultType>(name: "graphQLDiscovery", description: $"Discovery of downstream graphQL services", resolve: GraphQLDiscoveryResolver, deprecationReason: null); }
public void AddGraphTypeFields(QueryCore queryCore) { queryCore.FieldAsync <ListGraphType <TokenExchangeResponseType> >(name: "tokenExchange", description: $"Given a proper list of OAuth2 Tokens, returns an authorization payload for downstream authorized calls.", arguments: new QueryArguments(new QueryArgument <NonNullGraphType <TokenExchangeInput> > { Name = "input" }), resolve: async context => { try { var graphQLUserContext = context.UserContext as GraphQLUserContext; _summaryLogger.Add("query", "bind"); var input = context.GetArgument <BindInputModel>("input"); if (input.Tokens == null || input.Tokens.Count == 0) { throw new Exception("no tokens present in the request!"); } var requestedFields = (from item in context.SubFields select item.Key).ToList(); var summaryLog = string.Join(";", _summaryLogger.Select(x => x.Key + "=" + x.Value).ToArray()); _summaryLogger.Add("requestedFields", string.Join(" ", requestedFields)); var tokens = (from item in input.Tokens let c = new TokenWithScheme() { Token = item.Token, TokenScheme = item.TokenScheme } select c).ToList(); var tokenExchangeRequest = new TokenExchangeRequest() { Tokens = tokens, Extras = input.Extras }; var tokenExchangeResponse = await _tokenExchangeHandlerRouter.ProcessExchangeAsync(input.Exchange, tokenExchangeRequest); return(tokenExchangeResponse); } catch (Exception e) { _summaryLogger.Add("exception", e.Message); context.Errors.Add(new ExecutionError("Unable to process request", e)); } return(null); }, deprecationReason: null); }
public Client(QueryCore query, string querySelection, bool compileOnly, QueryCompilationEventArgs lastCompilation, Func <Client, Server> serverGenerator, PluginWindowManager pluginWinManager) { this._query = query; this._partialSource = !string.IsNullOrEmpty(querySelection); this._source = this._partialSource ? querySelection : this._query.Source; this._compileOnly = compileOnly; this._lastCompilation = lastCompilation; this._serverGenerator = serverGenerator; this._pluginWinManager = pluginWinManager; }
public void AddGraphTypeFields(QueryCore queryCore) { queryCore.FieldAsync <UnitTestResultType>(name: "unitTestCollection", description: $"a set of complex data collections", resolve: UnitTestCollectionResolver, deprecationReason: null); queryCore.FieldAsync <UnitTestResultType>(name: "unitTestCollectionThrow", description: $"THROWS a set of complex data collections", resolve: UnitTestCollectionResolverThrows, deprecationReason: null); }
public void AddGraphTypeFields(QueryCore queryCore) { var fieldType = queryCore.FieldAsync <CharacterInterface>( name: "hero", description: null, resolve: async context => { var result = await _starWarsData.GetDroidByIdAsync("3"); return(result); }); }
public override string GetFooter(QueryCore query) { StringBuilder builder = new StringBuilder(); builder.AppendLine(); if (query.QueryKind == QueryLanguage.FSharpExpression) { builder.AppendLine(" ).Dump()"); builder.AppendLine("end"); } return(builder.ToString()); }
public static QueryCompiler Create(QueryCore query, bool addReferences) { if (query.QueryKind.ToString().StartsWith("VB", StringComparison.Ordinal)) { return(new VBQueryCompiler(query, addReferences)); } if (query.QueryKind.ToString().StartsWith("FSharp", StringComparison.Ordinal)) { return(new FSharpQueryCompiler(query, addReferences)); } return(new CSharpQueryCompiler(query, addReferences)); }
public void AddGraphTypeFields(QueryCore queryCore) { queryCore.FieldAsync <CustomerType>( "customer", arguments: new QueryArguments(new QueryArgument <NonNullGraphType <StringGraphType> > { Name = "id" }), resolve: async context => { return(await context.TryAsyncResolve(CustomerResolver)); } ); }
public void AddGraphTypeFields(QueryCore queryCore) { queryCore.FieldAsync <CustomerResultType>(name: "customerLoyalty", description: null, resolve: async context => { var startQuery = context?.Operation? .SelectionSet? .Selections .Select(x => x as Field) .FirstOrDefault(); var fields = startQuery?.SelectionSet? .Selections .Select(x => x as Field) .ToList(); var prizesField = fields? .Where(x => "prizes".EqualsNoCase(x.Name)) .FirstOrDefault(); var userContext = context.UserContext.As <GraphQLUserContext>(); var user = userContext.HttpContextAccessor.HttpContext.User; var query = from item in user.Claims where item.Type == ClaimTypes.NameIdentifier select item; if (query.Any()) { var claim = query.First(); var userId = claim.Value; var customer = await _customerLoyaltyStore.GetCustomerAsync(userId); var customerResult = new CustomerResult { ID = customer.ID, LoyaltyPointBalance = customer.LoyaltyPointBalance }; if (prizesField != null) { var prizeStore = _lazyPrizeStore; var prizes = await prizeStore.GetAvailablePrizesAsync(customer.LoyaltyPointBalance); customerResult.Prizes = prizes; } return(customerResult); } return(null); }, deprecationReason: null); }
public void AddGraphTypeFields(QueryCore queryCore) { Func <ResolveFieldContext, string, object> func = (context, id) => _starWarsData.GetDroidByIdAsync(id); queryCore.FieldDelegate <DroidType>( "droid", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <StringGraphType> > { Name = "id", Description = "id of the droid" } ), resolve: func ); }
protected QueryCompiler(QueryCore query, bool addReferences) { this.IsMyExtensions = query.IsMyExtensions; if (this.IsMyExtensions) { MyExtensions.UpdateAdditionalRefs(query); } if (GacResolver.IsEntityFrameworkAvailable) { this.References.Add("System.Data.Entity.dll"); } DataContextDriver driver = query.GetDriver(true); if ((query.Repository != null) && (driver != null)) { this.ImportedNamespaces.RemoveRange(driver.GetNamespacesToRemoveInternal(query.Repository)); this.ImportedNamespaces.AddRange(driver.GetNamespacesToAddInternal(query.Repository)); if (addReferences) { this.References.AddRange(query.Repository.GetDriverAssemblies()); } } if (addReferences) { this.References.AddRange(PluginAssembly.GetCompatibleAssemblies(query.IsMyExtensions)); } this.ImportedNamespaces.AddRange(query.AdditionalNamespaces); if (!string.IsNullOrEmpty(query.QueryBaseClassNamespace)) { this.ImportedNamespaces.Add(query.QueryBaseClassNamespace); } if (addReferences) { this.References.AddRange(query.AllFileReferences); foreach (string str in query.AdditionalGACReferences) { string item = GacResolver.FindPath(str); if (item != null) { this.References.Add(item); } } this.References.AddRange(query.GetStaticSchemaSameFolderReferences()); if (!this.IsMyExtensions) { this.References.AddRange(MyExtensions.AdditionalRefs); } } }
public override string GetFooter(QueryCore query) { StringBuilder builder = new StringBuilder(); if (query.QueryKind == QueryLanguage.VBExpression) { builder.AppendLine("LINQPad.Extensions.Dump(linqPadQuery)"); } if (query.QueryKind != QueryLanguage.VBProgram) { builder.AppendLine("End Sub"); } builder.AppendLine("End Class"); return(builder.ToString()); }
public QueryProps(QueryCore q) { this._query = q; this.InitializeComponent(); foreach (string str in q.AdditionalReferences) { this.AddListViewAssembly(str); } foreach (string str in q.AdditionalGACReferences) { this.AddListViewAssembly(new AssemblyName(str)); } if (q.IsMyExtensions) { Label label = new Label { Dock = DockStyle.Top, AutoSize = true, Text = "My Extensions: References that you add here will apply to all queries", Padding = new Padding(0, 0, 0, 3), Font = new Font(FontManager.GetDefaultFont(), FontStyle.Bold) }; this.tabPage1.Controls.Add(label); this.btnSetAsDefault.Enabled = false; } else { QueryCore query = MyExtensions.Query; if (query != null) { foreach (string str in query.AdditionalReferences) { this.FlagAsInherited(this.AddListViewAssembly(str)); } foreach (string str in query.AdditionalGACReferences) { this.FlagAsInherited(this.AddListViewAssembly(new AssemblyName(str))); } } } this.txtNS.Lines = q.AdditionalNamespaces.ToArray <string>(); this.chkIncludePredicateBuilder.Checked = q.IncludePredicateBuilder; this._origNS = this.txtNS.Text.Trim(); this.EnableControls(); this.lvRefs.Sorting = SortOrder.Ascending; this.lvRefs.MouseMove += new MouseEventHandler(this.lvRefs_MouseMove); this.lvRefs.MouseDown += new MouseEventHandler(this.lvRefs_MouseDown); this.tc.TabPages[2].Dispose(); }
public void AddGraphTypeFields(QueryCore queryCore) { var fieldName = "echo"; var fieldType = queryCore.FieldAsync <VersionQueryOutput>(name: fieldName, description: null, arguments: new QueryArguments(new QueryArgument <VersionQueryInput> { Name = "input" }), resolve: async context => { var input = context.GetArgument <VersionQueryHandle>("input"); return(input); }, deprecationReason: null); }
public override string GetFooter(QueryCore query) { StringBuilder builder = new StringBuilder(); builder.AppendLine(); if (query.QueryKind == QueryLanguage.Expression) { builder.AppendLine(" );"); } if (query.QueryKind != QueryLanguage.Program) { builder.AppendLine(" }"); } builder.AppendLine("}"); return(builder.ToString()); }
public void AddGraphTypeFields(QueryCore queryCore) { var fieldName = "program"; var fieldType = queryCore.FieldAsync <ProgramQueryOutput>(name: fieldName, description: null, arguments: new QueryArguments(new QueryArgument <ProgramQueryInput> { Name = "input" }), resolve: async context => { var input = context.GetArgument <IsInstalledQuery>("input"); var programs = new Programs(); var result = programs.GetIsInstalled(input); var final = new IsInstalledOutput() { DisplayName = input.DisplayName, IsInstalled = result.Result.Value }; return(final); }, deprecationReason: null); fieldName = "installedApps"; fieldType = queryCore.FieldAsync <InstalledPageType>(name: fieldName, description: null, arguments: new QueryArguments(new QueryArgument <ProgramPageQueryInput> { Name = "input" }), resolve: async context => { var input = context.GetArgument <PageQuery>("input"); var programs = new Programs(); var result = programs.GetPage(input); var final = new InstalledPage() { Count = result.Length, NextOffset = input.Offset + input.Count, CurrentOffset = input.Offset, InstalledApps = new List <InstalledApp>(result) }; return(final); }, deprecationReason: null); }
public override string GetHeader(QueryCore q) { StringBuilder builder = new StringBuilder(); if (q.QueryKind == QueryLanguage.FSharpExpression) { builder.AppendLine("namespace global\r\n"); } builder.AppendLine(string.Join("\r\n", (from n in base.ImportedNamespaces select "open " + n).ToArray <string>())); builder.AppendLine("open LINQPad.FSharpExtensions"); if (q.QueryKind == QueryLanguage.FSharpProgram) { builder.AppendLine("let Dump = Extensions.Dump"); } DataContextDriver driver = q.GetDriver(true); StringBuilder builder2 = new StringBuilder(); if (q.QueryKind == QueryLanguage.FSharpExpression) { builder.Append("\r\ntype UserQuery("); if ((driver != null) && (q.QueryKind == QueryLanguage.FSharpExpression)) { builder2.Append(" inherit " + q.QueryBaseClassName + "("); ParameterDescriptor[] contextConstructorParams = base.GetContextConstructorParams(driver, q.Repository); builder.Append(string.Join(", ", (from p in contextConstructorParams select p.ParameterName + " : " + p.FullTypeName).ToArray <string>())); builder.Append(") as this "); builder2.Append(string.Join(", ", (from p in contextConstructorParams select p.ParameterName).ToArray <string>())); builder2.Append(")"); } else { builder.Append(")"); } builder.AppendLine(" = class"); if (builder2.Length > 0) { builder.AppendLine(builder2.ToString()); } builder.AppendLine(" member private dc.RunUserAuthoredQuery() ="); builder.AppendLine(" ("); } return(builder.ToString()); }
public override string GetHeader(QueryCore query) { StringBuilder builder = new StringBuilder("#Const LINQPAD = True\r\n"); builder.AppendLine(string.Join("\r\n", (from n in base.ImportedNamespaces select "Imports " + n).ToArray <string>())); builder.AppendLine(); if (query.IncludePredicateBuilder) { builder.AppendLine("Public Module PredicateBuilder\r\n <System.Runtime.CompilerServices.Extension> _\r\n Public Function [And](Of T)(ByVal expr1 As Expression(Of Func(Of T, Boolean)), ByVal expr2 As Expression(Of Func(Of T, Boolean))) As Expression(Of Func(Of T, Boolean))\r\n Dim invokedExpr As Expression = Expression.Invoke(expr2, expr1.Parameters.Cast(Of Expression)())\r\n Return Expression.Lambda(Of Func(Of T, Boolean))(Expression.AndAlso(expr1.Body, invokedExpr), expr1.Parameters)\r\n End Function\r\n\r\n Public Function [False](Of T)() As Expression(Of Func(Of T, Boolean))\r\n Return Function(f) False\r\n End Function\r\n\r\n <System.Runtime.CompilerServices.Extension> _\r\n Public Function [Or](Of T)(ByVal expr1 As Expression(Of Func(Of T, Boolean)), ByVal expr2 As Expression(Of Func(Of T, Boolean))) As Expression(Of Func(Of T, Boolean))\r\n Dim invokedExpr As Expression = Expression.Invoke(expr2, expr1.Parameters.Cast(Of Expression)())\r\n Return Expression.Lambda(Of Func(Of T, Boolean))(Expression.OrElse(expr1.Body, invokedExpr), expr1.Parameters)\r\n End Function\r\n\r\n Public Function [True](Of T)() As Expression(Of Func(Of T, Boolean))\r\n Return Function(f) True\r\n End Function\r\n\r\nEnd Module\r\n"); } builder.AppendLine("Public Class UserQuery"); if (query.QueryBaseClassName != null) { builder.AppendLine(" Inherits " + query.QueryBaseClassName); } builder.AppendLine(); builder.AppendLine(); DataContextDriver driver = query.GetDriver(true); if (driver != null) { ParameterDescriptor[] contextConstructorParams = base.GetContextConstructorParams(driver, query.Repository); builder.Append(" Public Sub New ("); builder.Append(string.Join(", ", (from p in contextConstructorParams select "ByVal " + p.ParameterName + " As " + p.FullTypeName).ToArray <string>())); builder.AppendLine(")"); builder.Append(" MyBase.New("); builder.Append(string.Join(", ", (from p in contextConstructorParams select p.ParameterName).ToArray <string>())); builder.AppendLine(")"); builder.AppendLine(" End Sub"); builder.AppendLine(); } builder.AppendLine(" Private Sub RunUserAuthoredQuery()"); if (query.QueryKind == QueryLanguage.VBExpression) { builder.Append("Dim linqPadQuery = "); } else if (query.QueryKind == QueryLanguage.VBProgram) { builder.AppendLine(" Main\r\nEnd Sub"); } return(builder.ToString()); }
public override string GetHeader(QueryCore q) { StringBuilder builder = new StringBuilder("#define LINQPAD\r\n"); builder.AppendLine(string.Join("\r\n", (from n in base.ImportedNamespaces select "using " + n + ";").ToArray <string>())); if (q.IncludePredicateBuilder) { builder.AppendLine("public static class PredicateBuilder\r\n{\r\n\tpublic static System.Linq.Expressions.Expression<Func<T, bool>> True<T> () { return f => true; }\r\n\tpublic static System.Linq.Expressions.Expression<Func<T, bool>> False<T> () { return f => false; }\r\n\r\n\tpublic static System.Linq.Expressions.Expression<Func<T, bool>> Or<T> (this System.Linq.Expressions.Expression<Func<T, bool>> expr1, System.Linq.Expressions.Expression<Func<T, bool>> expr2)\r\n\t{\r\n\t\tSystem.Linq.Expressions.Expression invokedExpr = System.Linq.Expressions.Expression.Invoke (\r\n\t\t expr2, expr1.Parameters.Cast<System.Linq.Expressions.Expression> ());\r\n\r\n\t\treturn System.Linq.Expressions.Expression.Lambda<Func<T, bool>> (\r\n\t\t System.Linq.Expressions.Expression.OrElse (expr1.Body, invokedExpr), expr1.Parameters);\r\n\t}\r\n\r\n\tpublic static System.Linq.Expressions.Expression<Func<T, bool>> And<T> (this System.Linq.Expressions.Expression<Func<T, bool>> expr1, System.Linq.Expressions.Expression<Func<T, bool>> expr2)\r\n\t{\r\n\t\tSystem.Linq.Expressions.Expression invokedExpr = System.Linq.Expressions.Expression.Invoke (\r\n\t\t expr2, expr1.Parameters.Cast<System.Linq.Expressions.Expression> ());\r\n\r\n\t\treturn System.Linq.Expressions.Expression.Lambda<Func<T, bool>> (\r\n\t\t System.Linq.Expressions.Expression.AndAlso (expr1.Body, invokedExpr), expr1.Parameters);\r\n\t}\r\n}"); } builder.Append("\r\npublic partial class UserQuery"); if (q.QueryBaseClassName != null) { builder.Append(" : " + q.QueryBaseClassName); } builder.AppendLine("\r\n{"); DataContextDriver driver = q.GetDriver(true); if (driver != null) { builder.Append(" public UserQuery ("); ParameterDescriptor[] contextConstructorParams = base.GetContextConstructorParams(driver, q.Repository); builder.Append(string.Join(", ", (from p in contextConstructorParams select p.FullTypeName + " " + p.ParameterName).ToArray <string>())); builder.Append(") : base ("); builder.Append(string.Join(", ", (from p in contextConstructorParams select p.ParameterName).ToArray <string>())); builder.AppendLine(") { }"); } builder.AppendLine("\r\n [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]"); builder.AppendLine(" void RunUserAuthoredQuery()"); builder.AppendLine(" {"); if (q.QueryKind == QueryLanguage.Expression) { builder.AppendLine(" LINQPad.Extensions.Dump<object> ("); } else if (q.QueryKind == QueryLanguage.Program) { builder.AppendLine(" Main();"); builder.AppendLine("}"); } return(builder.ToString()); }