private void SaveScriptSourceCode() { IScriptingService scripting = Services.GetService <IScriptingService>(); TSqlFragment syntaxTree = scripting.ParseScript(ScriptCode, out IList <ParseError> errors); if (errors.Count > 0) { ShowParseErrors(errors); throw new InvalidOperationException("Saving script failed: incorrect syntax."); } ScriptingController controller = Services.GetService <ScriptingController>(); string catalogName = controller.GetScriptsCatalogName(MyServer, MyDatabase, ScriptType); if (controller.ScriptFileExists(catalogName, Name)) { controller.SaveScriptFile(catalogName, Name, ScriptCode); } else { if (controller.GetScriptTreeNodeByName(MyServer, MyDatabase, ScriptType, Name) != null) { throw new InvalidOperationException($"Script node \"{Name}\" already exists!"); } controller.SaveScriptFile(catalogName, Name, ScriptCode); } MainWindowViewModel mainWindow = Services.GetService <MainWindowViewModel>(); TreeNodeViewModel treeNode = mainWindow.GetTreeNodeByPayload(mainWindow.MainTreeRegion.TreeNodes, this); if (treeNode == null) { controller.CreateScriptTreeNode(this); } }
private void ShowScriptUrlCommand(object node) { if (!(node is TreeNodeViewModel treeNode)) { return; } if (!(treeNode.NodePayload is MetaScript script)) { return; } WebServer webServer = treeNode.GetAncestorPayload <WebServer>(); DatabaseInfo database = treeNode.GetAncestorPayload <DatabaseInfo>(); DatabaseServer server = treeNode.GetAncestorPayload <DatabaseServer>(); string url = GetExecuteScriptUrl(webServer, server, database, script); ScriptingController controller = Services.GetService <ScriptingController>(); string sourceCode = controller.ReadScriptSourceCode(server, database, MetaScriptType.Script, script.Name); IMetadataService metadata = Services.GetService <IMetadataService>(); metadata.AttachDatabase(string.IsNullOrWhiteSpace(server.Address) ? server.Name : server.Address, database); IScriptingService scripting = Services.GetService <IScriptingService>(); TSqlFragment syntaxTree = scripting.ParseScript(sourceCode, out IList <ParseError> errors); if (errors.Count > 0) { ShowParseErrors(errors); return; } DeclareVariableStatementVisitor visitor = new DeclareVariableStatementVisitor(); syntaxTree.Accept(visitor); string jsonDTO = visitor.GenerateJsonParametersObject(); MainWindowViewModel mainWindow = Services.GetService <MainWindowViewModel>(); ScriptEditorViewModel editor = Services.GetService <ScriptEditorViewModel>(); editor.Name = $"{script.Name} (URL)"; editor.ScriptCode = url + Environment.NewLine + jsonDTO; ScriptEditorView scriptView = new ScriptEditorView() { DataContext = editor }; mainWindow.AddNewTab(editor.Name, scriptView); }