{"action":"created","comment":{"url":"https://api.github.com/repos/Microsoft/sqlopsstudio/pulls/comments/207355085","pull_request_review_id":142946778,"id":207355085,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNzM1NTA4NQ==","diff_hunk":"@@ -0,0 +1,397 @@\n+/*---------------------------------------------------------------------------------------------\n+ *  Copyright (c) Microsoft Corporation. All rights reserved.\n+ *  Licensed under the Source EULA. See License.txt in the project root for license information.\n+ *--------------------------------------------------------------------------------------------*/\n+\n+'use strict';\n+import * as sqlops from 'sqlops';\n+import * as vscode from 'vscode';\n+import * as nls from 'vscode-nls';\n+import {ImportDataModel} from '../api/models';\n+import {ImportPage} from '../api/importPage';\n+import {FlatFileProvider} from '../../services/contracts';\n+import {FlatFileWizard} from '../flatFileWizard';\n+\n+const localize = nls.loadMessageBundle();\n+\n+export class FileConfigPage extends ImportPage {\n+\n+\tprivate serverDropdown: sqlops.DropDownComponent;\n+\tprivate databaseDropdown: sqlops.DropDownComponent;\n+\tprivate fileTextBox: sqlops.InputBoxComponent;\n+\tprivate fileButton: sqlops.ButtonComponent;\n+\tprivate tableNameTextBox: sqlops.InputBoxComponent;\n+\tprivate schemaDropdown: sqlops.DropDownComponent;\n+\tprivate form: sqlops.FormContainer;\n+\n+\tprivate databaseLoader: sqlops.LoadingComponent;\n+\tprivate schemaLoader: sqlops.LoadingComponent;\n+\n+\tprivate tableNames: string[] = [];\n+\n+\tpublic constructor(instance: FlatFileWizard, model: ImportDataModel, view: sqlops.ModelView, provider: FlatFileProvider) {\n+\t\tsuper(instance, model, view, provider);\n+\t}\n+\n+\tasync start(): Promise<boolean> {\n+\t\tlet schemaComponent = await this.createSchemaDropdown();\n+\t\tlet tableNameComponent = await this.createTableNameBox();\n+\t\tlet fileBrowserComponent = await this.createFileBrowser();\n+\t\tlet databaseComponent = await this.createDatabaseDropdown();\n+\t\tlet serverComponent = await this.createServerDropdown();\n+\t\tthis.setupNavigationValidator();\n+\n+\t\tthis.form = this.view.modelBuilder.formContainer()\n+\t\t\t.withFormItems(\n+\t\t\t\t[\n+\t\t\t\t\tserverComponent,\n+\t\t\t\t\tdatabaseComponent,\n+\t\t\t\t\tfileBrowserComponent,\n+\t\t\t\t\ttableNameComponent,\n+\t\t\t\t\tschemaComponent\n+\t\t\t\t]).component();\n+\n+\t\tawait this.view.initializeModel(this.form);\n+\t\treturn true;\n+\t}\n+\n+\tasync onPageEnter(): Promise<boolean> {\n+\t\tawait this.populateServerDropdown();\n+\t\tawait this.populateDatabaseDropdown();\n+\t\tawait this.populateSchemaDropdown();\n+\t\treturn true;\n+\t}\n+\n+\tasync onPageLeave(): Promise<boolean> {\n+\t\treturn true;\n+\t}\n+\n+\tpublic async cleanup(): Promise<boolean> {\n+\t\tdelete this.model.filePath;\n+\t\tdelete this.model.table;\n+\n+\t\treturn true;\n+\t}\n+\n+\tprivate setupNavigationValidator() {\n+\t\tthis.instance.registerNavigationValidator((info) => {\n+\t\t\tif (this.schemaLoader.loading || this.databaseLoader.loading) {\n+\t\t\t\treturn false;\n+\t\t\t}\n+\t\t\treturn true;\n+\t\t});\n+\t}\n+\n+\tprivate async createServerDropdown(): Promise<sqlops.FormComponent> {\n+\t\tthis.serverDropdown = this.view.modelBuilder.dropDown().component();\n+\n+\t\t// Handle server changes\n+\t\tthis.serverDropdown.onValueChanged(async (params) => {\n+\t\t\tthis.model.server = (this.serverDropdown.value as ConnectionDropdownValue).connection;\n+\n+\t\t\tawait this.populateDatabaseDropdown();\n+\t\t\tawait this.populateSchemaDropdown();\n+\t\t});\n+\n+\t\treturn {\n+\t\t\tcomponent: this.serverDropdown,\n+\t\t\ttitle: localize('flatFileImport.serverDropdownTitle', 'Server the database is in')\n+\t\t};\n+\t}\n+\n+\tprivate async populateServerDropdown(): Promise<boolean> {\n+\t\tlet cons = await sqlops.connection.getActiveConnections();\n+\t\t// This user has no active connections ABORT MISSION\n+\t\tif (!cons || cons.length === 0) {\n+\t\t\treturn true;\n+\t\t}\n+\n+\n+\t\tlet count = -1;\n+\t\tlet idx = -1;\n+\n+\t\tlet values = cons.map(c => {\n+\t\t\t// Handle the code to remember what the user's choice was from before\n+\t\t\tcount++;\n+\t\t\tif (this.model.server && c.connectionId === this.model.server.connectionId) {\n+\t\t\t\tidx = count;\n+\t\t\t}\n+\n+\t\t\tlet db = c.options.databaseDisplayName;\n+\t\t\tlet usr = c.options.user;\n+\t\t\tlet srv = c.options.server;\n+\n+\t\t\tif (!db) {\n+\t\t\t\tdb = '<default>';\n+\t\t\t}\n+\n+\t\t\tif (!usr) {\n+\t\t\t\tusr = 'default';\n+\t\t\t}\n+\n+\t\t\tlet finalName = `${srv}, ${db} (${usr})`;\n+\t\t\treturn {\n+\t\t\t\tconnection: c,\n+\t\t\t\tdisplayName: finalName,\n+\t\t\t\tname: c.connectionId\n+\t\t\t};\n+\t\t});\n+\n+\t\tif (idx > 0) {\n+\t\t\tlet tmp = values[0];\n+\t\t\tvalues[0] = values[idx];\n+\t\t\tvalues[idx] = tmp;\n+\t\t} else {\n+\t\t\tdelete this.model.server;\n+\t\t\tdelete this.model.database;\n+\t\t\tdelete this.model.schema;\n+\t\t}\n+\n+\t\tthis.model.server = values[0].connection;\n+\n+\n+\t\tthis.serverDropdown.updateProperties({\n+\t\t\tvalues: values\n+\t\t});\n+\t\treturn true;\n+\t}\n+\n+\tprivate async createDatabaseDropdown(): Promise<sqlops.FormComponent> {\n+\t\tthis.databaseDropdown = this.view.modelBuilder.dropDown().component();\n+\n+\t\t// Handle database changes\n+\t\tthis.databaseDropdown.onValueChanged(async (db) => {\n+\t\t\tthis.model.database = (<sqlops.CategoryValue>this.databaseDropdown.value).name;\n+\t\t\tthis.populateTableNames();\n+\t\t\tthis.populateSchemaDropdown();\n+\t\t});\n+\n+\t\tthis.databaseLoader = this.view.modelBuilder.loadingComponent().withItem(this.databaseDropdown).component();\n+\n+\t\treturn {\n+\t\t\tcomponent: this.databaseLoader,\n+\t\t\ttitle: localize('flatFileImport.databaseDropdownTitle', 'Database the table is created in')\n+\t\t};\n+\t}\n+\n+\tprivate async populateDatabaseDropdown(): Promise<boolean> {\n+\t\tthis.databaseLoader.loading = true;\n+\t\tthis.databaseDropdown.updateProperties({values: []});\n+\t\tthis.schemaDropdown.updateProperties({values: []});\n+\n+\t\tif (!this.model.server) {\n+\t\t\t//TODO handle error case\n+\t\t\tthis.databaseLoader.loading = false;\n+\t\t\treturn false;\n+\t\t}\n+\n+\n+\t\tlet idx = -1;\n+\t\tlet count = -1;\n+\t\tlet values = (await sqlops.connection.listDatabases(this.model.server.connectionId)).map(db => {\n+\t\t\tcount++;\n+\t\t\tif (this.model.database && db === this.model.database) {\n+\t\t\t\tidx = count;\n+\t\t\t}\n+\t\t\treturn {\n+\t\t\t\tdisplayName: db,\n+\t\t\t\tname: db\n+\t\t\t};\n+\t\t});\n+\n+\t\tif (idx > 0) {\n+\t\t\tlet tmp = values[0];\n+\t\t\tvalues[0] = values[idx];\n+\t\t\tvalues[idx] = tmp;\n+\t\t} else {\n+\t\t\tdelete this.model.database;\n+\t\t\tdelete this.model.schema;\n+\t\t}\n+\n+\t\tthis.model.database = values[0].name;\n+\n+\t\tthis.databaseDropdown.updateProperties({\n+\t\t\tvalues: values\n+\t\t});\n+\t\tthis.databaseLoader.loading = false;\n+\n+\t\treturn true;\n+\t}\n+\n+\tprivate async createFileBrowser(): Promise<sqlops.FormComponent> {\n+\t\tthis.fileTextBox = this.view.modelBuilder.inputBox().component();\n+\t\tthis.fileButton = this.view.modelBuilder.button().withProperties({\n+\t\t\tlabel: localize('flatFileImport.browseFiles', 'Browse'),\n+\t\t}).component();\n+\n+\t\tthis.fileButton.onDidClick(async (click) => {\n+\t\t\t//TODO: Add filters for csv and txt","path":"extensions/import/src/wizard/pages/fileConfigPage.ts","position":228,"original_position":228,"commit_id":"a156c0662f76b48f6058b55944b822c883faf94f","original_commit_id":"a156c0662f76b48f6058b55944b822c883faf94f","user":{"login":"MattIrv","id":3758704,"node_id":"MDQ6VXNlcjM3NTg3MDQ=","avatar_url":"https://avatars3.githubusercontent.com/u/3758704?v=4","gravatar_id":"","url":"https://api.github.com/users/MattIrv","html_url":"https://github.com/MattIrv","followers_url":"https://api.github.com/users/MattIrv/followers","following_url":"https://api.github.com/users/MattIrv/following{/other_user}","gists_url":"https://api.github.com/users/MattIrv/gists{/gist_id}","starred_url":"https://api.github.com/users/MattIrv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MattIrv/subscriptions","organizations_url":"https://api.github.com/users/MattIrv/orgs","repos_url":"https://api.github.com/users/MattIrv/repos","events_url":"https://api.github.com/users/MattIrv/events{/privacy}","received_events_url":"https://api.github.com/users/MattIrv/received_events","type":"User","site_admin":false},"body":"looks like this comment can be removed now","created_at":"2018-08-02T20:02:04Z","updated_at":"2018-08-02T20:10:31Z","html_url":"https://github.com/Microsoft/sqlopsstudio/pull/2130#discussion_r207355085","pull_request_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/pulls/2130","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/Microsoft/sqlopsstudio/pulls/comments/207355085"},"html":{"href":"https://github.com/Microsoft/sqlopsstudio/pull/2130#discussion_r207355085"},"pull_request":{"href":"https://api.github.com/repos/Microsoft/sqlopsstudio/pulls/2130"}}},"pull_request":{"url":"https://api.github.com/repos/Microsoft/sqlopsstudio/pulls/2130","id":205840552,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA1ODQwNTUy","html_url":"https://github.com/Microsoft/sqlopsstudio/pull/2130","diff_url":"https://github.com/Microsoft/sqlopsstudio/pull/2130.diff","patch_url":"https://github.com/Microsoft/sqlopsstudio/pull/2130.patch","issue_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/issues/2130","number":2130,"state":"open","locked":false,"title":"Import Wizard","user":{"login":"aaomidi","id":1465785,"node_id":"MDQ6VXNlcjE0NjU3ODU=","avatar_url":"https://avatars0.githubusercontent.com/u/1465785?v=4","gravatar_id":"","url":"https://api.github.com/users/aaomidi","html_url":"https://github.com/aaomidi","followers_url":"https://api.github.com/users/aaomidi/followers","following_url":"https://api.github.com/users/aaomidi/following{/other_user}","gists_url":"https://api.github.com/users/aaomidi/gists{/gist_id}","starred_url":"https://api.github.com/users/aaomidi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aaomidi/subscriptions","organizations_url":"https://api.github.com/users/aaomidi/orgs","repos_url":"https://api.github.com/users/aaomidi/repos","events_url":"https://api.github.com/users/aaomidi/events{/privacy}","received_events_url":"https://api.github.com/users/aaomidi/received_events","type":"User","site_admin":false},"body":"This is the PR for the Flat File Importer UI code.\r\n\r\nDo not merge yet as the backend/middleware blobs are not yet made accessible.  ","created_at":"2018-08-02T19:41:35Z","updated_at":"2018-08-02T20:10:32Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b87abfc312ccd3200c732864a1e257f64930053d","assignee":null,"assignees":[],"requested_reviewers":[{"login":"kburtram","id":599935,"node_id":"MDQ6VXNlcjU5OTkzNQ==","avatar_url":"https://avatars2.githubusercontent.com/u/599935?v=4","gravatar_id":"","url":"https://api.github.com/users/kburtram","html_url":"https://github.com/kburtram","followers_url":"https://api.github.com/users/kburtram/followers","following_url":"https://api.github.com/users/kburtram/following{/other_user}","gists_url":"https://api.github.com/users/kburtram/gists{/gist_id}","starred_url":"https://api.github.com/users/kburtram/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kburtram/subscriptions","organizations_url":"https://api.github.com/users/kburtram/orgs","repos_url":"https://api.github.com/users/kburtram/repos","events_url":"https://api.github.com/users/kburtram/events{/privacy}","received_events_url":"https://api.github.com/users/kburtram/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":1012918102,"node_id":"MDU6TGFiZWwxMDEyOTE4MTAy","url":"https://api.github.com/repos/Microsoft/sqlopsstudio/labels/Do%20not%20merge","name":"Do not merge","color":"d93f0b","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/pulls/2130/commits","review_comments_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/pulls/2130/comments","review_comment_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/issues/2130/comments","statuses_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/statuses/a156c0662f76b48f6058b55944b822c883faf94f","head":{"label":"Microsoft:hackathon/amir/flatfile","ref":"hackathon/amir/flatfile","sha":"a156c0662f76b48f6058b55944b822c883faf94f","user":{"login":"Microsoft","id":6154722,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYxNTQ3MjI=","avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":109200851,"node_id":"MDEwOlJlcG9zaXRvcnkxMDkyMDA4NTE=","name":"sqlopsstudio","full_name":"Microsoft/sqlopsstudio","owner":{"login":"Microsoft","id":6154722,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYxNTQ3MjI=","avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/sqlopsstudio","description":"SQL Operations Studio is a data management tool that enables working with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.","fork":false,"url":"https://api.github.com/repos/Microsoft/sqlopsstudio","forks_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/forks","keys_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/teams","hooks_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/events","assignees_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/tags","blobs_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/languages","stargazers_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/subscription","commits_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/merges","archive_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/downloads","issues_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/deployments","created_at":"2017-11-02T01:00:13Z","updated_at":"2018-08-02T17:58:10Z","pushed_at":"2018-08-02T19:41:35Z","git_url":"git://github.com/Microsoft/sqlopsstudio.git","ssh_url":"git@github.com:Microsoft/sqlopsstudio.git","clone_url":"https://github.com/Microsoft/sqlopsstudio.git","svn_url":"https://github.com/Microsoft/sqlopsstudio","homepage":"","size":27451,"stargazers_count":4102,"watchers_count":4102,"language":"TypeScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":250,"mirror_url":null,"archived":false,"open_issues_count":585,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":250,"open_issues":585,"watchers":4102,"default_branch":"master"}},"base":{"label":"Microsoft:master","ref":"master","sha":"1a7f0673ea8a6ea1b2e136a3719441a5bc0c59e1","user":{"login":"Microsoft","id":6154722,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYxNTQ3MjI=","avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":109200851,"node_id":"MDEwOlJlcG9zaXRvcnkxMDkyMDA4NTE=","name":"sqlopsstudio","full_name":"Microsoft/sqlopsstudio","owner":{"login":"Microsoft","id":6154722,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYxNTQ3MjI=","avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/sqlopsstudio","description":"SQL Operations Studio is a data management tool that enables working with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.","fork":false,"url":"https://api.github.com/repos/Microsoft/sqlopsstudio","forks_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/forks","keys_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/teams","hooks_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/events","assignees_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/tags","blobs_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/languages","stargazers_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/subscription","commits_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/merges","archive_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/downloads","issues_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/sqlopsstudio/deployments","created_at":"2017-11-02T01:00:13Z","updated_at":"2018-08-02T17:58:10Z","pushed_at":"2018-08-02T19:41:35Z","git_url":"git://github.com/Microsoft/sqlopsstudio.git","ssh_url":"git@github.com:Microsoft/sqlopsstudio.git","clone_url":"https://github.com/Microsoft/sqlopsstudio.git","svn_url":"https://github.com/Microsoft/sqlopsstudio","homepage":"","size":27451,"stargazers_count":4102,"watchers_count":4102,"language":"TypeScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":250,"mirror_url":null,"archived":false,"open_issues_count":585,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":250,"open_issues":585,"watchers":4102,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Microsoft/sqlopsstudio/pulls/2130"},"html":{"href":"https://github.com/Microsoft/sqlopsstudio/pull/2130"},"issue":{"href":"https://api.github.com/repos/Microsoft/sqlopsstudio/issues/2130"},"comments":{"href":"https://api.github.com/repos/Microsoft/sqlopsstudio/issues/2130/comments"},"review_comments":{"href":"https://api.github.com/repos/Microsoft/sqlopsstudio/pulls/2130/comments"},"review_comment":{"href":"https://api.github.com/repos/Microsoft/sqlopsstudio/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Microsoft/sqlopsstudio/pulls/2130/commits"},"statuses":{"href":"https://api.github.com/repos/Microsoft/sqlopsstudio/statuses/a156c0662f76b48f6058b55944b822c883faf94f"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"MattIrv"}}