In this guide, you’ll learn how to connect to a PlanetScale MySQL database with Go by exploring a sample API built using the Gin routing framework.Prerequisites:
Start in PlanetScale by creating a new database. From the dashboard, click “New Database”, then “Create new database”. Name the database products_db, select the desired Plan type, and click “Create database”.By default, web console access to production branches is disabled to prevent accidental deletion. From your database’s dashboard page, click on the “Settings” tab, check the box labelled “Allow web console access to production branches”, and click “Save database settings”.Then, click on the “Console” tab, then “Connect”.
Run the following two commands to create a sample table and insert some data:
CREATE TABLE `products` ( `id` int PRIMARY KEY AUTO_INCREMENT, `name` varchar(100) NOT NULL, `price` int NOT NULL);INSERT INTO `products` (name, price) VALUES ('Cyberfreak 2076', 40), ('Destination 2: Shining Decline', 20), ('Edge Properties 3', 15);
Finally, head to the “Dashboard” tab and click “Connect”.
On the following page, click “Create password” to generate a new password for your database. Then click Go in the Select your language or framework section, and copy the contents of the .env file. You’ll need it for the next section.
Open the project in VS Code and add a new file in the root of the project named .env, Populate the file with the contents taken from the Connect modal in the previous section.
Now that the project is running, let’s explore the code to see how everything works. All of the code is stored in main.go, with each of the core SQL operations mapped by HTTP method in the main function:
HTTP Method Name
Query Type
get
SELECT
post
INSERT
put
UPDATE
delete
DELETE
func main() { // Load in the `.env` file err := godotenv.Load() if err != nil { log.Fatal("failed to load env", err) } // Open a connection to the database db, err = sql.Open("mysql", os.Getenv("DSN")) if err != nil { log.Fatal("failed to open db connection", err) } // Build router & define routes router := gin.Default() router.GET("/products", GetProducts) router.GET("/products/:productId", GetSingleProduct) router.POST("/products", CreateProduct) router.PUT("/products/:productId", UpdateProduct) router.DELETE("/products/:productId", DeleteProduct) // Run the router router.Run()}
Open the tests.http file, which contains HTTP requests that can be sent to test the API. Running the get {{hostname}}/products test is the equivalent of running SELECT * FROM products in SQL and returning the results as JSON.
If you do not wish to use VS Code with the Rest Client plugin, you may use tests.http as a reference for your preferred IDE and API testing software.
This is the GetProducts function defined in main.go. Notice how the query variable is the SELECT statement, which is passed into db.Query before being scanned into a slice of Product structs.
To pass parameters into queries, you may use a ? as a placeholder for the parameter. For example, GetSingleProduct uses a query with a WHERE clause that is passed into the db.QueryRow function along with the query string.
func GetSingleProduct(c *gin.Context) { productId := c.Param("productId") productId = strings.ReplaceAll(productId, "/", "") productIdInt, err := strconv.Atoi(productId) if err != nil { log.Fatal("(GetSingleProduct) strconv.Atoi", err) } var product Product // `?` is a placeholder for the parameter query := `SELECT * FROM products WHERE id = ?` // `productIdInt` is passed in with the query err = db.QueryRow(query, productIdInt).Scan(&product.Id, &product.Name, &product.Price) if err != nil { log.Fatal("(GetSingleProduct) db.Exec", err) } c.JSON(http.StatusOK, product)}
Parameters in queries are populated in the order they are passed into the respective db function, as demonstrated in CreateProduct.
func CreateProduct(c *gin.Context) { var newProduct Product err := c.BindJSON(&newProduct) if err != nil { log.Fatal("(CreateProduct) c.BindJSON", err) } // This query has multiple `?` parameter placeholders query := `INSERT INTO products (name, price) VALUES (?, ?)` // The `Exec` function takes in a query, as well as the values for // the parameters in the order they are defined res, err := db.Exec(query, newProduct.Name, newProduct.Price) if err != nil { log.Fatal("(CreateProduct) db.Exec", err) } newProduct.Id, err = res.LastInsertId() if err != nil { log.Fatal("(CreateProduct) res.LastInsertId", err) } c.JSON(http.StatusOK, newProduct)}
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"PlanetScale","description":"PlanetScale is a relational database platform for Vitess, Neki, and Postgres that gives you scale, performance, and reliability without sacrificing developer experience.","colors":{"primary":"#0e73cc","light":"#47b7f8","dark":"#f15817"},"logo":{"light":"https://mintcdn.com/planetscale-2/xUilVHToUFALai8a/logo/light.png?fit=max\u0026auto=format\u0026n=xUilVHToUFALai8a\u0026q=85\u0026s=cccd3c9fc813c01b899ab7af15a115b1","dark":"https://mintcdn.com/planetscale-2/xUilVHToUFALai8a/logo/dark.png?fit=max\u0026auto=format\u0026n=xUilVHToUFALai8a\u0026q=85\u0026s=4153888dc0ef54ddc3464738a2d7ee6e","href":"https://planetscale.com"},"favicon":"https://mintcdn.com/planetscale-2/DJh9Bv1aUZHTVDnK/favicon.svg?fit=max\u0026auto=format\u0026n=DJh9Bv1aUZHTVDnK\u0026q=85\u0026s=cc6ec9d8d0deb3450719bb4b5b6df73a","background":{"color":{"light":"#fafafa","dark":"#111111"}},"navbar":{"links":[{"href":"https://auth.planetscale.com/sign-in","label":"Log in"},{"href":"https://auth.planetscale.com/sign-up","label":"Get started"}],"primary":{"type":"button","label":"Get in touch","href":"https://planetscale.com/contact"}},"footer":{"socials":{"x":"https://twitter.com/planetscale","github":"https://github.com/planetscale","linkedin":"https://www.linkedin.com/company/planetscale","youtube":"https://www.youtube.com/c/PlanetScale","discord":"https://pscale.link/community","facebook":"https://www.facebook.com/planetscaledata"}},"seo":{"metatags":{"canonical":"https://planetscale.com/docs"}},"fonts":{"heading":{"family":"Inter"},"body":{"family":"Inter"}},"integrations":{"segment":{"key":"9Ujczlrndco2w8fcFAakL0FT4bsJCCh3"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://planetscale.com/blog"},{"anchor":"Contact Us","icon":"headset","href":"https://planetscale.com/contact"},{"anchor":"Status","icon":"signal","href":"https://www.planetscalestatus.com/"},{"anchor":"Benchmarks","icon":"chart-line","href":"https://planetscale.com/benchmarks"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"planetscale-2","hasAudioNarration":false,"actualSubdomain":"planetscale-2","customDomains":["planetscale.com"],"gitSource":{"type":"github","owner":"planetscale","repo":"www","deployBranch":"main","contentDirectory":"content/mintlify/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae505c7cb870de49023cbd6","collectionId":"75c09c64-fefe-4ba5-8569-25281688c6cb","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae505c7cb870de49023cbd6"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae50e31004f8cf1ce957135","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Platform","count":289},{"language":"default","tag":"API Reference","count":268},{"language":"default","tag":"Vitess","count":184},{"language":"default","tag":"Postgres","count":109},{"language":"default","tag":"General API endpoints","count":97},{"language":"default","tag":"Neki","count":58},{"language":"default","tag":"Guides","count":58},{"language":"default","tag":"Vitess API endpoints","count":56},{"language":"default","tag":"Postgres API endpoints","count":51},{"language":"default","tag":"Neki API endpoints","count":50}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"type":"link","url":"https://planetscale.com/contact?initial=support"}},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#content-container{column-gap:2rem}.nav-tabs{column-gap:.5em}.nav-tabs-item{padding:0 8px}.eyebrow,.light #navigation-items .text-gray-700,.nav-tabs a{color:#616161}#navigation-items .text-primary,#topbar-cta-button .text-white,#topbar-cta-button svg,.nav-tabs a.text-primary{color:#1a1a1a}.nav-tabs a.text-primary .bg-primary{background-color:#1a1a1a;left:0}.dark .nav-tabs a[href='/docs/vitess'i].text-primary,.nav-tabs a[href='/docs/vitess'i].text-primary{color:#f15817}.dark .nav-tabs a[href='/docs/vitess'i].text-primary .bg-primary,.nav-tabs a[href='/docs/vitess'i].text-primary .bg-primary{background-color:#f15817}.nav-tabs a[href='/docs/postgres'i].text-primary{color:#0e73cc}.nav-tabs a[href='/docs/postgres'i].text-primary .bg-primary{background-color:#0e73cc}.nav-tabs a[href='/docs/neki'i].text-primary{color:#8f7200}.nav-tabs a[href='/docs/neki'i].text-primary .bg-primary{background-color:#8f7200}.dark .nav-tabs a{color:#a1a1a1}.dark #navigation-items .text-primary,.dark .nav-tabs a.text-primary{color:#fafafa}.dark .nav-tabs a.text-primary .bg-primary{background-color:#fafafa}.dark .nav-tabs a[href='/docs/postgres'i].text-primary{color:#47b7f8}.dark .nav-tabs a[href='/docs/postgres'i].text-primary .bg-primary{background-color:#47b7f8}.dark .nav-tabs a[href='/docs/neki'i].text-primary{color:#fbca00}.dark .nav-tabs a[href='/docs/neki'i].text-primary .bg-primary{background-color:#fbca00}.prose:is(.dark *){color:#c1c1c1}.prose :where(a):not(:where([class~='not-prose'], [class~='not-prose'] *)){color:#0e73cc;font-weight:500}.dark .prose :where(a):not(:where(.not-prose, .not-prose *)){color:#47b7f8}.dark .eyebrow{color:#a1a1a1}@media (min-width:1024px){#content-container{padding-top:2rem;padding-right:2rem;padding-left:2.5rem}}#topbar-cta-button a>span{background-color:#fbca00}.group:hover span{opacity:1!important}.bg-primary\\/10{background-color:rgba(129,129,129,.1)}.dark .bg-primary\\/10{background-color:rgba(255,255,255,.1)}body[data-current-path^='/vitess'] svg.bg-primary{background-color:#f15817}body[data-current-path^='/vitess'] .border-primary{border-color:#f15817}body[data-current-path^='/vitess'] #table-of-contents-content .text-primary,body[data-current-path^='/vitess'] .eyebrow{color:#f15817}body[data-current-path^='/vitess'] .card-group a:hover{border-color:#f15817!important}body[data-current-path^='/postgres'] .eyebrow{color:#0e73cc}.dark body[data-current-path^='/postgres'] .eyebrow{color:#47b7f8}body[data-current-path^='/neki'] svg.bg-primary{background-color:#8f7200}body[data-current-path^='/neki'] [data-component-part=card-icon]{background-color:#fbca00}body[data-current-path^='/neki'] [data-component-part=card-icon] svg.bg-primary{background-color:#1a1a1a;transform:scale(.7);transform-origin:center}body[data-current-path^='/neki'] .border-primary{border-color:#8f7200}body[data-current-path^='/neki'] #table-of-contents-content .text-primary{color:#1a1a1a;background-color:transparent;border-color:#fbca00}body[data-current-path^='/neki'] .eyebrow{display:inline-flex;align-items:center;width:fit-content;height:auto;min-height:1.25rem;padding:0 .375rem;color:#1a1a1a;background-color:#fbca00}body[data-current-path^='/neki'] .eyebrow:empty,body[data-current-path^='/neki'] .eyebrow[data-empty]{display:none}.dark body[data-current-path^='/neki'] .card-group .card:hover,body[data-current-path^='/neki'] .card-group .card:hover{--primary:251 202 0;--primary-light:251 202 0;border-color:#fbca00!important}.dark body[data-current-path^='/neki'] [data-component-part=card-icon],.dark body[data-current-path^='/neki'] svg.bg-primary{background-color:#fbca00}.dark body[data-current-path^='/neki'] [data-component-part=card-icon] svg.bg-primary{background-color:#1a1a1a}.dark body[data-current-path^='/neki'] .border-primary{border-color:#fbca00}.dark body[data-current-path^='/neki'] #table-of-contents-content .text-primary{color:#fafafa;background-color:transparent;border-color:#fbca00}.dark body[data-current-path^='/neki'] .eyebrow{color:#1a1a1a;background-color:#fbca00}footer div:last-child{display:none}#header,#pagination a,[data-component-part=card-content-container],[data-component-part=frame-caption]{text-wrap:balance}.step:last-of-type [data-component-part=step-line]{opacity:0}"}],"page":{"pagePath":"vitess/tutorials/connect-go-app","slug":"/vitess/tutorials/connect-go-app","pageMetadata":{"title":"Connect a Go application to PlanetScale","sidebarTitle":"Go quickstart","og:image":"images/og/vitess/tutorials/connect-go-app.png","description":null,"href":"/vitess/tutorials/connect-go-app"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const __snippet_platformLabels_3vlljw={vitess:`Vitess`,postgres:`Postgres`,neki:`Neki`};const __snippet_combinedPlatformLabels_3vlljw={both:`Vitess and Postgres`,all:`Vitess, Neki, and Postgres`,\"postgres-neki\":`Postgres and Neki`};const __snippet_platformBadgeClassName_3vlljw=`inline-flex items-center gap-1.5 whitespace-nowrap rounded-full border px-2.5 py-1 text-[13px] font-semibold leading-tight no-underline data-[engine=vitess]:data-[state=current]:border-[#ffc59b] data-[engine=vitess]:data-[state=current]:bg-[#ffe8d8] data-[engine=vitess]:data-[state=current]:text-[#672002] dark:data-[engine=vitess]:data-[state=current]:border-[#962d00] dark:data-[engine=vitess]:data-[state=current]:bg-[#3c1403] dark:data-[engine=vitess]:data-[state=current]:text-[#ffe8d8] data-[engine=vitess]:data-[state=link]:border-[#ffc59b] data-[engine=vitess]:data-[state=link]:bg-transparent data-[engine=vitess]:data-[state=link]:text-[#b83a05] dark:data-[engine=vitess]:data-[state=link]:border-[#962d00] dark:data-[engine=vitess]:data-[state=link]:bg-transparent dark:data-[engine=vitess]:data-[state=link]:text-[#ffc59b] data-[engine=postgres]:data-[state=current]:border-[#a9dffe] data-[engine=postgres]:data-[state=current]:bg-[#ddf2ff] data-[engine=postgres]:data-[state=current]:text-[#0e3682] dark:data-[engine=postgres]:data-[state=current]:border-[#144eb6] dark:data-[engine=postgres]:data-[state=current]:bg-[#08204e] dark:data-[engine=postgres]:data-[state=current]:text-[#ddf2ff] data-[engine=postgres]:data-[state=link]:border-[#a9dffe] data-[engine=postgres]:data-[state=link]:bg-transparent data-[engine=postgres]:data-[state=link]:text-[#0b6ec5] dark:data-[engine=postgres]:data-[state=link]:border-[#144eb6] dark:data-[engine=postgres]:data-[state=link]:bg-transparent dark:data-[engine=postgres]:data-[state=link]:text-[#73c7f9] data-[engine=neki]:data-[state=current]:border-[#fbca00] data-[engine=neki]:data-[state=current]:bg-[#fbca00] data-[engine=neki]:data-[state=current]:text-[#1a1a1a] dark:data-[engine=neki]:data-[state=current]:border-[#fbca00] dark:data-[engine=neki]:data-[state=current]:bg-[#fbca00] dark:data-[engine=neki]:data-[state=current]:text-[#1a1a1a] data-[engine=neki]:data-[state=link]:border-[#fbca00] data-[engine=neki]:data-[state=link]:bg-transparent data-[engine=neki]:data-[state=link]:text-[#8f7200] dark:data-[engine=neki]:data-[state=link]:border-[#fbca00] dark:data-[engine=neki]:data-[state=link]:bg-transparent dark:data-[engine=neki]:data-[state=link]:text-[#fbca00] data-[engine=both]:data-[state=current]:border-[#d4d4d4] data-[engine=both]:data-[state=current]:bg-[#f0f0f0] data-[engine=both]:data-[state=current]:text-[#3d3d3d] dark:data-[engine=both]:data-[state=current]:border-[#525252] dark:data-[engine=both]:data-[state=current]:bg-[#2a2a2a] dark:data-[engine=both]:data-[state=current]:text-[#e5e5e5]`;const __snippet_docsHref_3vlljw=path=>path.startsWith(`/`)?path:`/${path}`;const __snippet_PlatformAvailabilityBadges_3vlljw=({current,vitess,postgres,neki})=>{const _components={a:`a`,..._provideComponents()};if(__snippet_combinedPlatformLabels_3vlljw[current]){return _jsx(`div`,{className:`not-prose mint-mb-5 mint-flex mint-flex-wrap mint-items-center mint-gap-2`,role:`group`,\"aria-label\":`Platform availability`,children:_jsx(`span`,{\"data-engine\":`both`,\"data-state\":`current`,\"aria-current\":`true`,className:`mint-inline-flex mint-items-center mint-gap-1.5 mint-whitespace-nowrap mint-rounded-full mint-border mint-px-2.5 mint-py-1 mint-text-[13px] mint-font-semibold mint-leading-tight mint-no-underline data-[engine=vitess]:data-[state=current]:mint-border-[#ffc59b] data-[engine=vitess]:data-[state=current]:mint-bg-[#ffe8d8] data-[engine=vitess]:data-[state=current]:mint-text-[#672002] dark:data-[engine=vitess]:data-[state=current]:mint-border-[#962d00] dark:data-[engine=vitess]:data-[state=current]:mint-bg-[#3c1403] dark:data-[engine=vitess]:data-[state=current]:mint-text-[#ffe8d8] data-[engine=vitess]:data-[state=link]:mint-border-[#ffc59b] data-[engine=vitess]:data-[state=link]:mint-bg-transparent data-[engine=vitess]:data-[state=link]:mint-text-[#b83a05] dark:data-[engine=vitess]:data-[state=link]:mint-border-[#962d00] dark:data-[engine=vitess]:data-[state=link]:mint-bg-transparent dark:data-[engine=vitess]:data-[state=link]:mint-text-[#ffc59b] data-[engine=postgres]:data-[state=current]:mint-border-[#a9dffe] data-[engine=postgres]:data-[state=current]:mint-bg-[#ddf2ff] data-[engine=postgres]:data-[state=current]:mint-text-[#0e3682] dark:data-[engine=postgres]:data-[state=current]:mint-border-[#144eb6] dark:data-[engine=postgres]:data-[state=current]:mint-bg-[#08204e] dark:data-[engine=postgres]:data-[state=current]:mint-text-[#ddf2ff] data-[engine=postgres]:data-[state=link]:mint-border-[#a9dffe] data-[engine=postgres]:data-[state=link]:mint-bg-transparent data-[engine=postgres]:data-[state=link]:mint-text-[#0b6ec5] dark:data-[engine=postgres]:data-[state=link]:mint-border-[#144eb6] dark:data-[engine=postgres]:data-[state=link]:mint-bg-transparent dark:data-[engine=postgres]:data-[state=link]:mint-text-[#73c7f9] data-[engine=neki]:data-[state=current]:mint-border-[#fbca00] data-[engine=neki]:data-[state=current]:mint-bg-[#fbca00] data-[engine=neki]:data-[state=current]:mint-text-[#1a1a1a] dark:data-[engine=neki]:data-[state=current]:mint-border-[#fbca00] dark:data-[engine=neki]:data-[state=current]:mint-bg-[#fbca00] dark:data-[engine=neki]:data-[state=current]:mint-text-[#1a1a1a] data-[engine=neki]:data-[state=link]:mint-border-[#fbca00] data-[engine=neki]:data-[state=link]:mint-bg-transparent data-[engine=neki]:data-[state=link]:mint-text-[#8f7200] dark:data-[engine=neki]:data-[state=link]:mint-border-[#fbca00] dark:data-[engine=neki]:data-[state=link]:mint-bg-transparent dark:data-[engine=neki]:data-[state=link]:mint-text-[#fbca00] data-[engine=both]:data-[state=current]:mint-border-[#d4d4d4] data-[engine=both]:data-[state=current]:mint-bg-[#f0f0f0] data-[engine=both]:data-[state=current]:mint-text-[#3d3d3d] dark:data-[engine=both]:data-[state=current]:mint-border-[#525252] dark:data-[engine=both]:data-[state=current]:mint-bg-[#2a2a2a] dark:data-[engine=both]:data-[state=current]:mint-text-[#e5e5e5]`,children:__snippet_combinedPlatformLabels_3vlljw[current]})})}const paths={vitess,postgres,neki};const others=[`vitess`,`neki`,`postgres`].filter(engine=>engine!==current\u0026\u0026paths[engine]);const engines=__snippet_platformLabels_3vlljw[current]?[current,...others]:others;const only=engines.length===1;return _jsx(`div`,{className:`not-prose mint-mb-5 mint-flex mint-flex-wrap mint-items-center mint-gap-2`,role:`group`,\"aria-label\":`Platform availability`,children:engines.map(engine=>{const label=only?`${__snippet_platformLabels_3vlljw[engine]} only`:__snippet_platformLabels_3vlljw[engine];if(engine===current){return _jsx(`span`,{\"data-engine\":engine,\"data-state\":`current`,\"aria-current\":`true`,className:`mint-inline-flex mint-items-center mint-gap-1.5 mint-whitespace-nowrap mint-rounded-full mint-border mint-px-2.5 mint-py-1 mint-text-[13px] mint-font-semibold mint-leading-tight mint-no-underline data-[engine=vitess]:data-[state=current]:mint-border-[#ffc59b] data-[engine=vitess]:data-[state=current]:mint-bg-[#ffe8d8] data-[engine=vitess]:data-[state=current]:mint-text-[#672002] dark:data-[engine=vitess]:data-[state=current]:mint-border-[#962d00] dark:data-[engine=vitess]:data-[state=current]:mint-bg-[#3c1403] dark:data-[engine=vitess]:data-[state=current]:mint-text-[#ffe8d8] data-[engine=vitess]:data-[state=link]:mint-border-[#ffc59b] data-[engine=vitess]:data-[state=link]:mint-bg-transparent data-[engine=vitess]:data-[state=link]:mint-text-[#b83a05] dark:data-[engine=vitess]:data-[state=link]:mint-border-[#962d00] dark:data-[engine=vitess]:data-[state=link]:mint-bg-transparent dark:data-[engine=vitess]:data-[state=link]:mint-text-[#ffc59b] data-[engine=postgres]:data-[state=current]:mint-border-[#a9dffe] data-[engine=postgres]:data-[state=current]:mint-bg-[#ddf2ff] data-[engine=postgres]:data-[state=current]:mint-text-[#0e3682] dark:data-[engine=postgres]:data-[state=current]:mint-border-[#144eb6] dark:data-[engine=postgres]:data-[state=current]:mint-bg-[#08204e] dark:data-[engine=postgres]:data-[state=current]:mint-text-[#ddf2ff] data-[engine=postgres]:data-[state=link]:mint-border-[#a9dffe] data-[engine=postgres]:data-[state=link]:mint-bg-transparent data-[engine=postgres]:data-[state=link]:mint-text-[#0b6ec5] dark:data-[engine=postgres]:data-[state=link]:mint-border-[#144eb6] dark:data-[engine=postgres]:data-[state=link]:mint-bg-transparent dark:data-[engine=postgres]:data-[state=link]:mint-text-[#73c7f9] data-[engine=neki]:data-[state=current]:mint-border-[#fbca00] data-[engine=neki]:data-[state=current]:mint-bg-[#fbca00] data-[engine=neki]:data-[state=current]:mint-text-[#1a1a1a] dark:data-[engine=neki]:data-[state=current]:mint-border-[#fbca00] dark:data-[engine=neki]:data-[state=current]:mint-bg-[#fbca00] dark:data-[engine=neki]:data-[state=current]:mint-text-[#1a1a1a] data-[engine=neki]:data-[state=link]:mint-border-[#fbca00] data-[engine=neki]:data-[state=link]:mint-bg-transparent data-[engine=neki]:data-[state=link]:mint-text-[#8f7200] dark:data-[engine=neki]:data-[state=link]:mint-border-[#fbca00] dark:data-[engine=neki]:data-[state=link]:mint-bg-transparent dark:data-[engine=neki]:data-[state=link]:mint-text-[#fbca00] data-[engine=both]:data-[state=current]:mint-border-[#d4d4d4] data-[engine=both]:data-[state=current]:mint-bg-[#f0f0f0] data-[engine=both]:data-[state=current]:mint-text-[#3d3d3d] dark:data-[engine=both]:data-[state=current]:mint-border-[#525252] dark:data-[engine=both]:data-[state=current]:mint-bg-[#2a2a2a] dark:data-[engine=both]:data-[state=current]:mint-text-[#e5e5e5]`,children:label},engine)}return _jsxs(_components.a,{href:__snippet_docsHref_3vlljw(paths[engine]),\"data-engine\":engine,\"data-state\":`link`,title:`View ${__snippet_platformLabels_3vlljw[engine]} documentation`,className:`mint-inline-flex mint-items-center mint-gap-1.5 mint-whitespace-nowrap mint-rounded-full mint-border mint-px-2.5 mint-py-1 mint-text-[13px] mint-font-semibold mint-leading-tight mint-no-underline data-[engine=vitess]:data-[state=current]:mint-border-[#ffc59b] data-[engine=vitess]:data-[state=current]:mint-bg-[#ffe8d8] data-[engine=vitess]:data-[state=current]:mint-text-[#672002] dark:data-[engine=vitess]:data-[state=current]:mint-border-[#962d00] dark:data-[engine=vitess]:data-[state=current]:mint-bg-[#3c1403] dark:data-[engine=vitess]:data-[state=current]:mint-text-[#ffe8d8] data-[engine=vitess]:data-[state=link]:mint-border-[#ffc59b] data-[engine=vitess]:data-[state=link]:mint-bg-transparent data-[engine=vitess]:data-[state=link]:mint-text-[#b83a05] dark:data-[engine=vitess]:data-[state=link]:mint-border-[#962d00] dark:data-[engine=vitess]:data-[state=link]:mint-bg-transparent dark:data-[engine=vitess]:data-[state=link]:mint-text-[#ffc59b] data-[engine=postgres]:data-[state=current]:mint-border-[#a9dffe] data-[engine=postgres]:data-[state=current]:mint-bg-[#ddf2ff] data-[engine=postgres]:data-[state=current]:mint-text-[#0e3682] dark:data-[engine=postgres]:data-[state=current]:mint-border-[#144eb6] dark:data-[engine=postgres]:data-[state=current]:mint-bg-[#08204e] dark:data-[engine=postgres]:data-[state=current]:mint-text-[#ddf2ff] data-[engine=postgres]:data-[state=link]:mint-border-[#a9dffe] data-[engine=postgres]:data-[state=link]:mint-bg-transparent data-[engine=postgres]:data-[state=link]:mint-text-[#0b6ec5] dark:data-[engine=postgres]:data-[state=link]:mint-border-[#144eb6] dark:data-[engine=postgres]:data-[state=link]:mint-bg-transparent dark:data-[engine=postgres]:data-[state=link]:mint-text-[#73c7f9] data-[engine=neki]:data-[state=current]:mint-border-[#fbca00] data-[engine=neki]:data-[state=current]:mint-bg-[#fbca00] data-[engine=neki]:data-[state=current]:mint-text-[#1a1a1a] dark:data-[engine=neki]:data-[state=current]:mint-border-[#fbca00] dark:data-[engine=neki]:data-[state=current]:mint-bg-[#fbca00] dark:data-[engine=neki]:data-[state=current]:mint-text-[#1a1a1a] data-[engine=neki]:data-[state=link]:mint-border-[#fbca00] data-[engine=neki]:data-[state=link]:mint-bg-transparent data-[engine=neki]:data-[state=link]:mint-text-[#8f7200] dark:data-[engine=neki]:data-[state=link]:mint-border-[#fbca00] dark:data-[engine=neki]:data-[state=link]:mint-bg-transparent dark:data-[engine=neki]:data-[state=link]:mint-text-[#fbca00] data-[engine=both]:data-[state=current]:mint-border-[#d4d4d4] data-[engine=both]:data-[state=current]:mint-bg-[#f0f0f0] data-[engine=both]:data-[state=current]:mint-text-[#3d3d3d] dark:data-[engine=both]:data-[state=current]:mint-border-[#525252] dark:data-[engine=both]:data-[state=current]:mint-bg-[#2a2a2a] dark:data-[engine=both]:data-[state=current]:mint-text-[#e5e5e5]`,children:[label,_jsx(`svg`,{\"aria-hidden\":`true`,width:`12`,height:`12`,viewBox:`0 0 12 12`,fill:`none`,className:`mint-shrink-0`,children:_jsx(`path`,{d:`M2.5 6h7M6.5 3l3 3-3 3`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`})})]},engine)})})};const __snippet_PlatformAvailabilityText_3vlljw=({current,vitess,postgres,neki})=>{const _components={a:`a`,..._provideComponents()};return __snippet_combinedPlatformLabels_3vlljw[current]?_jsxs(`p`,{children:[`Available for `,__snippet_combinedPlatformLabels_3vlljw[current],`.`]}):_jsxs(_Fragment,{children:[_jsxs(`p`,{children:[`This page covers `,__snippet_platformLabels_3vlljw[current],`.`]}),vitess\u0026\u0026current!==`vitess`?_jsxs(`p`,{children:[`Vitess version: `,_jsx(_components.a,{href:vitess.startsWith(`/`)?vitess:`/`+vitess,children:__snippet_platformLabels_3vlljw.vitess})]}):null,postgres\u0026\u0026current!==`postgres`?_jsxs(`p`,{children:[`Postgres version: `,_jsx(_components.a,{href:postgres.startsWith(`/`)?postgres:`/`+postgres,children:__snippet_platformLabels_3vlljw.postgres})]}):null,neki\u0026\u0026current!==`neki`?_jsxs(`p`,{children:[`Neki version: `,_jsx(_components.a,{href:neki.startsWith(`/`)?neki:`/`+neki,children:__snippet_platformLabels_3vlljw.neki})]}):null]})};const PlatformAvailability=props=>{const{Visibility}=_provideComponents()||{};if(!Visibility)_missingMdxReference(`Visibility`,true);return _jsxs(_Fragment,{children:[_jsx(Visibility,{for:`humans`,children:_jsx(__snippet_PlatformAvailabilityBadges_3vlljw,{...props})}),_jsx(Visibility,{for:`agents`,children:_jsx(__snippet_PlatformAvailabilityText_3vlljw,{...props})})]})};const VimeoEmbed=({id,title})=>{const{Frame}=_provideComponents()||{};if(!Frame)_missingMdxReference(`Frame`,true);return _jsx(Frame,{children:_jsx(`iframe`,{src:`https://player.vimeo.com/video/${id}?dnt=true`,title,className:`mint-aspect-video mint-w-full`,allow:`autoplay; fullscreen; picture-in-picture`})})};function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Frame,Heading,OptimizedImage,Table,Tip,Warning,_MdxComponentBoundary}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsx(_MdxComponentBoundary,{name:`PlatformAvailability`,children:_jsx(PlatformAvailability,{current:`vitess`})}),`\n`,_jsx(_MdxComponentBoundary,{name:`VimeoEmbed`,children:_jsx(VimeoEmbed,{id:`759188218`,title:`Connect to PlanetScale with Go`})}),`\n`,_jsx(Heading,{level:`2`,id:`introduction`,children:`Introduction`}),`\n`,_jsx(_components.p,{children:`In this guide, you’ll learn how to connect to a PlanetScale MySQL database with Go by exploring a sample API built using the Gin routing framework.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Prerequisites:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://go.dev/doc/install`,children:`Go`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://auth.planetscale.com/sign-up`,children:`A PlanetScale account`})}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://code.visualstudio.com/download`,children:`VS Code`}),` (optional)`]}),`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.a,{href:`https://marketplace.visualstudio.com/items?itemName=humao.rest-client`,children:`VS Code Rest Client plugin`}),` (optional)`]}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Already have a Go application and just want to connect to PlanetScale? Check out the `,_jsx(_components.a,{href:`https://github.com/planetscale/connection-examples/tree/main/go`,children:`Go quick connect repo`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`create-the-database`,children:`Create the database`}),`\n`,_jsxs(_components.p,{children:[`Start in PlanetScale by creating a new database. From the dashboard, click “`,_jsx(_components.strong,{children:`New Database`}),`”, then “`,_jsx(_components.strong,{children:`Create new database`}),`”. Name the database `,_jsx(_components.code,{children:`products_db`}),`, select the desired `,_jsx(_components.a,{href:`/planetscale-plans`,children:`Plan type`}),`, and click “`,_jsx(_components.strong,{children:`Create database`}),`”.`]}),`\n`,_jsxs(_components.p,{children:[`By default, web console access to production branches is disabled to prevent accidental deletion. From your database’s dashboard page, click on the “`,_jsx(_components.strong,{children:`Settings`}),`” tab, check the box labelled “`,_jsx(_components.strong,{children:`Allow web console access to production branches`}),`”, and click “`,_jsx(_components.strong,{children:`Save database settings`}),`”.`]}),`\n`,_jsxs(_components.p,{children:[`Then, click on the `,_jsx(_components.strong,{children:`“Console”`}),` tab, then “`,_jsx(_components.strong,{children:`Connect`}),`”.`]}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/console-2.png?fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=47ce9ab0dec9d1aa926fdbfd3e2e3f3d`,alt:`The Console tab`,\"data-og-width\":`1529`,width:`1529`,\"data-og-height\":`1108`,height:`1108`,\"data-path\":`images/assets/docs/tutorials/connect-go-app/console-2.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/console-2.png?w=280\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=6ca22c5c2bee031b05dbaffb4ab46443 280w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/console-2.png?w=560\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=60ca82873d7b52c80fb3b5e4433f8fb8 560w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/console-2.png?w=840\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=8e4af6483abc347cc973c49885718c1e 840w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/console-2.png?w=1100\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=f173c5414a73b80e0c1f19f6deff3e70 1100w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/console-2.png?w=1650\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=61dd5daef6b2b5334eb0bae45c60b1eb 1650w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/console-2.png?w=2500\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=698df8f5448657eaa97f06cb9a63dd36 2500w`})}),`\n`,_jsx(_components.p,{children:`Run the following two commands to create a sample table and insert some data:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`CREATE`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` TABLE`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:\" `\"}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`products`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:\"` (\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"\t`id`\"}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` int`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` PRIMARY KEY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` AUTO_INCREMENT,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"\t`name`\"}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` varchar`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`100`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`NOT NULL`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"\t`price`\"}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` int`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` NOT NULL`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`INSERT INTO`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" `products`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, price) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`VALUES`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Cyberfreak 2076'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`40`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Destination 2: Shining Decline'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`20`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Edge Properties 3'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`15`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Finally, head to the `,_jsx(_components.strong,{children:`“Dashboard”`}),` tab and click `,_jsx(_components.strong,{children:`“Connect”`}),`.`]}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/connect-2.png?fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=3dafe11e53a351c65575f30f0a246c84`,alt:`The location of the Connect button`,\"data-og-width\":`1598`,width:`1598`,\"data-og-height\":`806`,height:`806`,\"data-path\":`images/assets/docs/tutorials/connect-go-app/connect-2.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/connect-2.png?w=280\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=559c441382d43b084a15eb39f4626b7d 280w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/connect-2.png?w=560\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=73069325ed91533abeee4c2fce87f604 560w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/connect-2.png?w=840\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=63fd557aee900331b9a6ee65cd78f9d7 840w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/connect-2.png?w=1100\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=f9633fc8ddbf7d60ccdbec139d1f1fc8 1100w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/connect-2.png?w=1650\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=85682d67c3000b99d2736d4dfb06f196 1650w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/connect-2.png?w=2500\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=bce2fe8fc7527e3cfe8e3ae4c9c09d6b 2500w`})}),`\n`,_jsxs(_components.p,{children:[`On the following page, click `,_jsx(_components.strong,{children:`“Create password”`}),` to generate a new password for your database. Then click `,_jsx(_components.strong,{children:`Go`}),` in the `,_jsx(_components.strong,{children:`Select your language or framework`}),` section, and copy the contents of the `,_jsx(_components.code,{children:`.env`}),` file. You’ll need it for the next section.`]}),`\n`,_jsx(Heading,{level:`2`,id:`run-the-demo-project`,children:`Run the demo project`}),`\n`,_jsx(_components.p,{children:`Start by opening a terminal on your workstation and clone the sample repository provided.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`git`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` clone`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://github.com/planetscale/golang-example-gin.git`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Open the project in VS Code and add a new file in the root of the project named `,_jsx(_components.code,{children:`.env`}),`, Populate the file with the contents taken from the Connect modal in the previous section.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`DSN`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=****************`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`************`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`@tcp(us`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`-`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`east`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`connect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`psdb`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`cloud`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`products_db?tls`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`true\u0026interpolateParams`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`true`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Now open an integrated terminal in VS Code and run the project using the following commands:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`go`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mod`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tidy`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`go`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` .`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`The terminal should update with the following output.`}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/go-run-output.png?fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=d39f619c6cadddb3e9330b6087de3539`,alt:`The output of the GET test`,\"data-og-width\":`3140`,width:`3140`,\"data-og-height\":`1322`,height:`1322`,\"data-path\":`images/assets/docs/tutorials/connect-go-app/go-run-output.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/go-run-output.png?w=280\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=8bb4bab89b0ad3d9ba89d70e966b616a 280w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/go-run-output.png?w=560\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=6c98c7965c6af56474c7e0a6aed8597b 560w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/go-run-output.png?w=840\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=67292ff7cdffe7ba9b483176676bb408 840w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/go-run-output.png?w=1100\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=79aee5ee87f4a2c39080ec3a9cc42560 1100w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/go-run-output.png?w=1650\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=890429e4162f1ab433794ba4cec7c26a 1650w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/go-run-output.png?w=2500\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=0c09844fa292b413d2edd035e230b7d9 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`exploring-the-code`,children:`Exploring the code`}),`\n`,_jsxs(_components.p,{children:[`Now that the project is running, let’s explore the code to see how everything works. All of the code is stored in `,_jsx(_components.code,{children:`main.go`}),`, with each of the core SQL operations mapped by HTTP method in the `,_jsx(_components.code,{children:`main`}),` function:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`HTTP Method Name`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Query Type`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`get`}),_jsx(_components.td,{style:{textAlign:`left`},children:`SELECT`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`post`}),_jsx(_components.td,{style:{textAlign:`left`},children:`INSERT`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`put`}),_jsx(_components.td,{style:{textAlign:`left`},children:`UPDATE`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`delete`}),_jsx(_components.td,{style:{textAlign:`left`},children:`DELETE`})]})]})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`24`,language:`go`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`go`,children:_jsxs(_components.code,{language:`go`,numberOfLines:`24`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` main`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:\"\t// Load in the `.env` file\"})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\terr`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` godotenv`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Load`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`\tif`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\t\tlog`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Fatal`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"failed to load env\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\t}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`\t// Open a connection to the database`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tdb`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` sql`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Open`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"mysql\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`os`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Getenv`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"DSN\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`))`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`\tif`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\t\tlog`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Fatal`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"failed to open db connection\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\t}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`\t// Build router \u0026 define routes`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\trouter`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` gin`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Default`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\trouter`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`GET`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/products\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`GetProducts`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\trouter`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`GET`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/products/:productId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`GetSingleProduct`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\trouter`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`POST`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/products\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`CreateProduct`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\trouter`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`PUT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/products/:productId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`UpdateProduct`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\trouter`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`DELETE`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/products/:productId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`DeleteProduct`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`\t// Run the router`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\trouter`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Open the `,_jsx(_components.code,{children:`tests.http`}),` file, which contains HTTP requests that can be sent to test the API. Running the `,_jsx(_components.code,{children:`get {{hostname}}/products`}),` test is the equivalent of running `,_jsx(_components.code,{children:`SELECT * FROM products`}),` in SQL and returning the results as JSON.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`If you do not wish to use VS Code with the Rest Client plugin, you may use `,_jsx(_components.code,{children:`tests.http`}),` as a reference for your preferred IDE and API testing software.`]})}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/go-run-output.png?fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=d39f619c6cadddb3e9330b6087de3539`,alt:`The terminal output of the go run command`,\"data-og-width\":`3140`,width:`3140`,\"data-og-height\":`1322`,height:`1322`,\"data-path\":`images/assets/docs/tutorials/connect-go-app/go-run-output.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/go-run-output.png?w=280\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=8bb4bab89b0ad3d9ba89d70e966b616a 280w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/go-run-output.png?w=560\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=6c98c7965c6af56474c7e0a6aed8597b 560w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/go-run-output.png?w=840\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=67292ff7cdffe7ba9b483176676bb408 840w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/go-run-output.png?w=1100\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=79aee5ee87f4a2c39080ec3a9cc42560 1100w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/go-run-output.png?w=1650\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=890429e4162f1ab433794ba4cec7c26a 1650w, https://mintcdn.com/planetscale-2/Lta43VIYjNTnQ47e/images/assets/docs/tutorials/connect-go-app/go-run-output.png?w=2500\u0026fit=max\u0026auto=format\u0026n=Lta43VIYjNTnQ47e\u0026q=85\u0026s=0c09844fa292b413d2edd035e230b7d9 2500w`})}),`\n`,_jsxs(_components.p,{children:[`This is the `,_jsx(_components.code,{children:`GetProducts`}),` function defined in `,_jsx(_components.code,{children:`main.go`}),`. Notice how the `,_jsx(_components.code,{children:`query`}),` variable is the `,_jsx(_components.code,{children:`SELECT`}),` statement, which is passed into `,_jsx(_components.code,{children:`db.Query`}),` before being scanned into a slice of `,_jsx(_components.code,{children:`Product`}),` structs.`]}),`\n`,_jsx(CodeBlock,{filename:``,expandable:`true`,numberOfLines:`20`,language:`go`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`go`,children:_jsxs(_components.code,{language:`go`,numberOfLines:`20`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` GetProducts`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`c`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` *`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`gin`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tquery`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"SELECT * FROM products\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tres`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` db`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Query`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`query`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`\tdefer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Close`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`\tif`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\t\tlog`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Fatal`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"(GetProducts) db.Query\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\t}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tproducts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` []`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Product`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`\tfor`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Next`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\t\tvar`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` product`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Product`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\t\terr`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Scan`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u0026`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`product`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u0026`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`product`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u0026`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`product`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Price`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`\t\tif`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\t\t\tlog`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Fatal`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"(GetProducts) res.Scan\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\t\t}`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\t\tproducts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` append`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`products`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`product`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\t}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tc`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`JSON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`http`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`StatusOK`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`products`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`To pass parameters into queries, you may use a `,_jsx(_components.code,{children:`?`}),` as a placeholder for the parameter. For example, `,_jsx(_components.code,{children:`GetSingleProduct`}),` uses a query with a `,_jsx(_components.code,{children:`WHERE`}),` clause that is passed into the `,_jsx(_components.code,{children:`db.QueryRow`}),` function along with the query string.`]}),`\n`,_jsx(CodeBlock,{filename:``,expandable:`true`,numberOfLines:`19`,language:`go`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`go`,children:_jsxs(_components.code,{language:`go`,numberOfLines:`19`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` GetSingleProduct`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`c`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` *`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`gin`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tproductId`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Param`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"productId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tproductId`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` strings`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`ReplaceAll`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`productId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tproductIdInt`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` strconv`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Atoi`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`productId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`\tif`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\t\tlog`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Fatal`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"(GetSingleProduct) strconv.Atoi\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\t}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\tvar`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` product`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Product`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:\"\t// `?` is a placeholder for the parameter\"})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tquery`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" `SELECT * FROM products WHERE id = ?`\"})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:\"\t// `productIdInt` is passed in with the query\"})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\terr`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` db`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`QueryRow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`query`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`productIdInt`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Scan`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u0026`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`product`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u0026`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`product`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u0026`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`product`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Price`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`\tif`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\t\tlog`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Fatal`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"(GetSingleProduct) db.Exec\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\t}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tc`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`JSON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`http`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`StatusOK`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`product`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Parameters in queries are populated in the order they are passed into the respective `,_jsx(_components.code,{children:`db`}),` function, as demonstrated in `,_jsx(_components.code,{children:`CreateProduct`}),`.`]}),`\n`,_jsx(CodeBlock,{filename:``,expandable:`true`,numberOfLines:`22`,language:`go`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`go`,children:_jsxs(_components.code,{language:`go`,numberOfLines:`22`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` CreateProduct`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`c`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` *`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`gin`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\tvar`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` newProduct`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Product`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\terr`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`BindJSON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u0026`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`newProduct`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`\tif`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\t\tlog`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Fatal`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"(CreateProduct) c.BindJSON\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\t}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:\"\t// This query has multiple `?` parameter placeholders\"})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tquery`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" `INSERT INTO products (name, price) VALUES (?, ?)`\"})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:\"\t// The `Exec` function takes in a query, as well as the values for\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`\t// the parameters in the order they are defined`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tres`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` db`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Exec`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`query`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`newProduct`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`newProduct`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Price`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`\tif`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\t\tlog`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Fatal`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"(CreateProduct) db.Exec\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\t}`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tnewProduct`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`LastInsertId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`\tif`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\t\tlog`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Fatal`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"(CreateProduct) res.LastInsertId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\t}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`\tc`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`JSON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`http`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`StatusOK`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`newProduct`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`need-help`,children:`Need help?`}),`\n`,_jsxs(_components.p,{children:[`Get help from `,_jsx(_components.a,{href:`https://planetscale.com/contact?initial=support`,children:`the PlanetScale Support team`}),`, or join our\\xA0`,_jsx(_components.a,{href:`https://pscale.link/community`,children:`Discord community`}),` to see how others are using PlanetScale.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{__snippet_platformLabels_3vlljw,__snippet_combinedPlatformLabels_3vlljw,__snippet_platformBadgeClassName_3vlljw,__snippet_docsHref_3vlljw,__snippet_PlatformAvailabilityBadges_3vlljw,__snippet_PlatformAvailabilityText_3vlljw,PlatformAvailability,VimeoEmbed,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Connect a Go application to PlanetScale","sidebarTitle":"Go quickstart","og:image":"images/og/vitess/tutorials/connect-go-app.png","description":null,"href":"/vitess/tutorials/connect-go-app"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[166,14934,"undefined;const __snippet_combinedPlatformLabels_3vlljw=undefined;const __snippet_platformBadgeClassName_3vlljw=undefined;const __snippet_docsHref_3vlljw=()=>null;const __snippet_PlatformAvailabilityBadges_3vlljw=()=>null;const __snippet_PlatformAvailabilityText_3vlljw=()=>null;const PlatformAvailability=()=>null;const VimeoEmbed=()=>null"]]},"mdxExtracts":{"tableOfContents":[{"title":"Introduction","slug":"introduction","depth":2,"children":[]},{"title":"Create the database","slug":"create-the-database","depth":2,"children":[]},{"title":"Run the demo project","slug":"run-the-demo-project","depth":2,"children":[]},{"title":"Exploring the code","slug":"exploring-the-code","depth":2,"children":[]},{"title":"Need help?","slug":"need-help","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/planetscale-2/b155242ec3c4945e/custom.js"],"dynamicCss":".mint-mb-5 {\n margin-bottom: 1.25rem\n}\n.mint-flex {\n display: flex\n}\n.mint-inline-flex {\n display: inline-flex\n}\n.mint-aspect-video {\n aspect-ratio: 16 / 9\n}\n.mint-w-full {\n width: 100%\n}\n.mint-shrink-0 {\n flex-shrink: 0\n}\n.mint-flex-wrap {\n flex-wrap: wrap\n}\n.mint-items-center {\n align-items: center\n}\n.mint-gap-1\\.5 {\n gap: 0.375rem\n}\n.mint-gap-2 {\n gap: 0.5rem\n}\n.mint-whitespace-nowrap {\n white-space: nowrap\n}\n.mint-rounded-full {\n border-radius: 9999px\n}\n.mint-border {\n border-width: 1px\n}\n.mint-px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem\n}\n.mint-py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem\n}\n.mint-text-\\[13px\\] {\n font-size: 13px\n}\n.mint-font-semibold {\n font-weight: 600\n}\n.mint-leading-tight {\n line-height: 1.25\n}\n.mint-no-underline {\n text-decoration-line: none\n}\n.data-\\[engine\\=both\\]\\:data-\\[state\\=current\\]\\:mint-border-\\[\\#d4d4d4\\][data-state=\"current\"][data-engine=\"both\"] {\n --tw-border-opacity: 1;\n border-color: rgb(212 212 212 / var(--tw-border-opacity, 1))\n}\n.data-\\[engine\\=neki\\]\\:data-\\[state\\=current\\]\\:mint-border-\\[\\#fbca00\\][data-state=\"current\"][data-engine=\"neki\"] {\n --tw-border-opacity: 1;\n border-color: rgb(251 202 0 / var(--tw-border-opacity, 1))\n}\n.data-\\[engine\\=neki\\]\\:data-\\[state\\=link\\]\\:mint-border-\\[\\#fbca00\\][data-state=\"link\"][data-engine=\"neki\"] {\n --tw-border-opacity: 1;\n border-color: rgb(251 202 0 / var(--tw-border-opacity, 1))\n}\n.data-\\[engine\\=postgres\\]\\:data-\\[state\\=current\\]\\:mint-border-\\[\\#a9dffe\\][data-state=\"current\"][data-engine=\"postgres\"] {\n --tw-border-opacity: 1;\n border-color: rgb(169 223 254 / var(--tw-border-opacity, 1))\n}\n.data-\\[engine\\=postgres\\]\\:data-\\[state\\=link\\]\\:mint-border-\\[\\#a9dffe\\][data-state=\"link\"][data-engine=\"postgres\"] {\n --tw-border-opacity: 1;\n border-color: rgb(169 223 254 / var(--tw-border-opacity, 1))\n}\n.data-\\[engine\\=vitess\\]\\:data-\\[state\\=current\\]\\:mint-border-\\[\\#ffc59b\\][data-state=\"current\"][data-engine=\"vitess\"] {\n --tw-border-opacity: 1;\n border-color: rgb(255 197 155 / var(--tw-border-opacity, 1))\n}\n.data-\\[engine\\=vitess\\]\\:data-\\[state\\=link\\]\\:mint-border-\\[\\#ffc59b\\][data-state=\"link\"][data-engine=\"vitess\"] {\n --tw-border-opacity: 1;\n border-color: rgb(255 197 155 / var(--tw-border-opacity, 1))\n}\n.data-\\[engine\\=both\\]\\:data-\\[state\\=current\\]\\:mint-bg-\\[\\#f0f0f0\\][data-state=\"current\"][data-engine=\"both\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(240 240 240 / var(--tw-bg-opacity, 1))\n}\n.data-\\[engine\\=neki\\]\\:data-\\[state\\=current\\]\\:mint-bg-\\[\\#fbca00\\][data-state=\"current\"][data-engine=\"neki\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(251 202 0 / var(--tw-bg-opacity, 1))\n}\n.data-\\[engine\\=neki\\]\\:data-\\[state\\=link\\]\\:mint-bg-transparent[data-state=\"link\"][data-engine=\"neki\"] {\n background-color: transparent\n}\n.data-\\[engine\\=postgres\\]\\:data-\\[state\\=current\\]\\:mint-bg-\\[\\#ddf2ff\\][data-state=\"current\"][data-engine=\"postgres\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(221 242 255 / var(--tw-bg-opacity, 1))\n}\n.data-\\[engine\\=postgres\\]\\:data-\\[state\\=link\\]\\:mint-bg-transparent[data-state=\"link\"][data-engine=\"postgres\"] {\n background-color: transparent\n}\n.data-\\[engine\\=vitess\\]\\:data-\\[state\\=current\\]\\:mint-bg-\\[\\#ffe8d8\\][data-state=\"current\"][data-engine=\"vitess\"] {\n --tw-bg-opacity: 1;\n background-color: rgb(255 232 216 / var(--tw-bg-opacity, 1))\n}\n.data-\\[engine\\=vitess\\]\\:data-\\[state\\=link\\]\\:mint-bg-transparent[data-state=\"link\"][data-engine=\"vitess\"] {\n background-color: transparent\n}\n.data-\\[engine\\=both\\]\\:data-\\[state\\=current\\]\\:mint-text-\\[\\#3d3d3d\\][data-state=\"current\"][data-engine=\"both\"] {\n --tw-text-opacity: 1;\n color: rgb(61 61 61 / var(--tw-text-opacity, 1))\n}\n.data-\\[engine\\=neki\\]\\:data-\\[state\\=current\\]\\:mint-text-\\[\\#1a1a1a\\][data-state=\"current\"][data-engine=\"neki\"] {\n --tw-text-opacity: 1;\n color: rgb(26 26 26 / var(--tw-text-opacity, 1))\n}\n.data-\\[engine\\=neki\\]\\:data-\\[state\\=link\\]\\:mint-text-\\[\\#8f7200\\][data-state=\"link\"][data-engine=\"neki\"] {\n --tw-text-opacity: 1;\n color: rgb(143 114 0 / var(--tw-text-opacity, 1))\n}\n.data-\\[engine\\=postgres\\]\\:data-\\[state\\=current\\]\\:mint-text-\\[\\#0e3682\\][data-state=\"current\"][data-engine=\"postgres\"] {\n --tw-text-opacity: 1;\n color: rgb(14 54 130 / var(--tw-text-opacity, 1))\n}\n.data-\\[engine\\=postgres\\]\\:data-\\[state\\=link\\]\\:mint-text-\\[\\#0b6ec5\\][data-state=\"link\"][data-engine=\"postgres\"] {\n --tw-text-opacity: 1;\n color: rgb(11 110 197 / var(--tw-text-opacity, 1))\n}\n.data-\\[engine\\=vitess\\]\\:data-\\[state\\=current\\]\\:mint-text-\\[\\#672002\\][data-state=\"current\"][data-engine=\"vitess\"] {\n --tw-text-opacity: 1;\n color: rgb(103 32 2 / var(--tw-text-opacity, 1))\n}\n.data-\\[engine\\=vitess\\]\\:data-\\[state\\=link\\]\\:mint-text-\\[\\#b83a05\\][data-state=\"link\"][data-engine=\"vitess\"] {\n --tw-text-opacity: 1;\n color: rgb(184 58 5 / var(--tw-text-opacity, 1))\n}\n.dark\\:data-\\[engine\\=both\\]\\:data-\\[state\\=current\\]\\:mint-border-\\[\\#525252\\][data-state=\"current\"][data-engine=\"both\"]:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(82 82 82 / var(--tw-border-opacity, 1))\n}\n.dark\\:data-\\[engine\\=neki\\]\\:data-\\[state\\=current\\]\\:mint-border-\\[\\#fbca00\\][data-state=\"current\"][data-engine=\"neki\"]:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(251 202 0 / var(--tw-border-opacity, 1))\n}\n.dark\\:data-\\[engine\\=neki\\]\\:data-\\[state\\=link\\]\\:mint-border-\\[\\#fbca00\\][data-state=\"link\"][data-engine=\"neki\"]:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(251 202 0 / var(--tw-border-opacity, 1))\n}\n.dark\\:data-\\[engine\\=postgres\\]\\:data-\\[state\\=current\\]\\:mint-border-\\[\\#144eb6\\][data-state=\"current\"][data-engine=\"postgres\"]:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(20 78 182 / var(--tw-border-opacity, 1))\n}\n.dark\\:data-\\[engine\\=postgres\\]\\:data-\\[state\\=link\\]\\:mint-border-\\[\\#144eb6\\][data-state=\"link\"][data-engine=\"postgres\"]:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(20 78 182 / var(--tw-border-opacity, 1))\n}\n.dark\\:data-\\[engine\\=vitess\\]\\:data-\\[state\\=current\\]\\:mint-border-\\[\\#962d00\\][data-state=\"current\"][data-engine=\"vitess\"]:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(150 45 0 / var(--tw-border-opacity, 1))\n}\n.dark\\:data-\\[engine\\=vitess\\]\\:data-\\[state\\=link\\]\\:mint-border-\\[\\#962d00\\][data-state=\"link\"][data-engine=\"vitess\"]:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(150 45 0 / var(--tw-border-opacity, 1))\n}\n.dark\\:data-\\[engine\\=both\\]\\:data-\\[state\\=current\\]\\:mint-bg-\\[\\#2a2a2a\\][data-state=\"current\"][data-engine=\"both\"]:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(42 42 42 / var(--tw-bg-opacity, 1))\n}\n.dark\\:data-\\[engine\\=neki\\]\\:data-\\[state\\=current\\]\\:mint-bg-\\[\\#fbca00\\][data-state=\"current\"][data-engine=\"neki\"]:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(251 202 0 / var(--tw-bg-opacity, 1))\n}\n.dark\\:data-\\[engine\\=neki\\]\\:data-\\[state\\=link\\]\\:mint-bg-transparent[data-state=\"link\"][data-engine=\"neki\"]:is(.dark *) {\n background-color: transparent\n}\n.dark\\:data-\\[engine\\=postgres\\]\\:data-\\[state\\=current\\]\\:mint-bg-\\[\\#08204e\\][data-state=\"current\"][data-engine=\"postgres\"]:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(8 32 78 / var(--tw-bg-opacity, 1))\n}\n.dark\\:data-\\[engine\\=postgres\\]\\:data-\\[state\\=link\\]\\:mint-bg-transparent[data-state=\"link\"][data-engine=\"postgres\"]:is(.dark *) {\n background-color: transparent\n}\n.dark\\:data-\\[engine\\=vitess\\]\\:data-\\[state\\=current\\]\\:mint-bg-\\[\\#3c1403\\][data-state=\"current\"][data-engine=\"vitess\"]:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(60 20 3 / var(--tw-bg-opacity, 1))\n}\n.dark\\:data-\\[engine\\=vitess\\]\\:data-\\[state\\=link\\]\\:mint-bg-transparent[data-state=\"link\"][data-engine=\"vitess\"]:is(.dark *) {\n background-color: transparent\n}\n.dark\\:data-\\[engine\\=both\\]\\:data-\\[state\\=current\\]\\:mint-text-\\[\\#e5e5e5\\][data-state=\"current\"][data-engine=\"both\"]:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(229 229 229 / var(--tw-text-opacity, 1))\n}\n.dark\\:data-\\[engine\\=neki\\]\\:data-\\[state\\=current\\]\\:mint-text-\\[\\#1a1a1a\\][data-state=\"current\"][data-engine=\"neki\"]:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(26 26 26 / var(--tw-text-opacity, 1))\n}\n.dark\\:data-\\[engine\\=neki\\]\\:data-\\[state\\=link\\]\\:mint-text-\\[\\#fbca00\\][data-state=\"link\"][data-engine=\"neki\"]:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(251 202 0 / var(--tw-text-opacity, 1))\n}\n.dark\\:data-\\[engine\\=postgres\\]\\:data-\\[state\\=current\\]\\:mint-text-\\[\\#ddf2ff\\][data-state=\"current\"][data-engine=\"postgres\"]:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(221 242 255 / var(--tw-text-opacity, 1))\n}\n.dark\\:data-\\[engine\\=postgres\\]\\:data-\\[state\\=link\\]\\:mint-text-\\[\\#73c7f9\\][data-state=\"link\"][data-engine=\"postgres\"]:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(115 199 249 / var(--tw-text-opacity, 1))\n}\n.dark\\:data-\\[engine\\=vitess\\]\\:data-\\[state\\=current\\]\\:mint-text-\\[\\#ffe8d8\\][data-state=\"current\"][data-engine=\"vitess\"]:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 232 216 / var(--tw-text-opacity, 1))\n}\n.dark\\:data-\\[engine\\=vitess\\]\\:data-\\[state\\=link\\]\\:mint-text-\\[\\#ffc59b\\][data-state=\"link\"][data-engine=\"vitess\"]:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 197 155 / var(--tw-text-opacity, 1))\n}","subdomain":"planetscale-2","siteName":"PlanetScale","title":"Connect a Go application to PlanetScale - PlanetScale","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T21:38:56.317Z","originalFileLocation":"vitess/tutorials/connect-go-app.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"PlanetScale\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/planetscale-2/_bFyi8IG4CeLblEd/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/planetscale-2/_bFyi8IG4CeLblEd/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/planetscale-2/_bFyi8IG4CeLblEd/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/planetscale-2/_bFyi8IG4CeLblEd/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/planetscale-2/_bFyi8IG4CeLblEd/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/planetscale-2/_bFyi8IG4CeLblEd/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/planetscale-2/_bFyi8IG4CeLblEd/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/planetscale-2/_bFyi8IG4CeLblEd/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/planetscale-2/_bFyi8IG4CeLblEd/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Connect a Go application to PlanetScale - PlanetScale\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"PlanetScale\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://planetscale.com/docs/vitess/tutorials/connect-go-app\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://planetscale-2.mintlify.app/images/og/vitess/tutorials/connect-go-app.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Connect a Go application to PlanetScale - PlanetScale\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://planetscale-2.mintlify.app/images/og/vitess/tutorials/connect-go-app.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/planetscale-2/_bFyi8IG4CeLblEd/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"PlanetScale\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0e73cc\">\u003clink data-mint-head rel=\"canonical\" href=\"https://planetscale.com/docs/vitess/tutorials/connect-go-app\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/vitess/tutorials/connect-go-app.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://planetscale.com/#organization\",\"name\":\"PlanetScale\",\"url\":\"https://planetscale.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/planetscale-2/xUilVHToUFALai8a/logo/light.png?fit=max\u0026auto=format\u0026n=xUilVHToUFALai8a\u0026q=85\u0026s=cccd3c9fc813c01b899ab7af15a115b1\"}},{\"@type\":\"WebSite\",\"@id\":\"https://planetscale.com/docs#website\",\"name\":\"PlanetScale\",\"url\":\"https://planetscale.com/docs\",\"publisher\":{\"@id\":\"https://planetscale.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://planetscale.com/docs/vitess/tutorials/connect-go-app#webpage\",\"url\":\"https://planetscale.com/docs/vitess/tutorials/connect-go-app\",\"name\":\"Connect a Go application to PlanetScale\",\"dateModified\":\"2026-10-30T21:38:56.317Z\",\"isPartOf\":{\"@id\":\"https://planetscale.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://planetscale.com/docs/vitess/tutorials/connect-go-app#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://planetscale.com/docs/vitess/tutorials/connect-go-app#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://planetscale.com/docs/vitess/tutorials/connect-django-app\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Frameworks and ORMs\",\"item\":\"https://planetscale.com/docs/vitess/tutorials/connect-django-app\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Connect a Go application to PlanetScale\",\"item\":\"https://planetscale.com/docs/vitess/tutorials/connect-go-app\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://planetscale.com/docs/vitess/tutorials/connect-go-app#article\",\"headline\":\"Connect a Go application to PlanetScale\",\"name\":\"Connect a Go application to PlanetScale\",\"url\":\"https://planetscale.com/docs/vitess/tutorials/connect-go-app\",\"mainEntityOfPage\":{\"@id\":\"https://planetscale.com/docs/vitess/tutorials/connect-go-app#webpage\"},\"image\":\"https://planetscale.com/docs/images/og/vitess/tutorials/connect-go-app.png\",\"dateModified\":\"2026-10-30T21:38:56.317Z\",\"publisher\":{\"@id\":\"https://planetscale.com/#organization\"},\"isPartOf\":{\"@id\":\"https://planetscale.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"PlanetScale\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"PlanetScale","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://planetscale.com/blog"},{"anchor":"Contact Us","icon":"headset","href":"https://planetscale.com/contact"},{"anchor":"Status","icon":"signal","href":"https://www.planetscalestatus.com/"},{"anchor":"Benchmarks","icon":"chart-line","href":"https://planetscale.com/benchmarks"}]},"tabs":[{"tab":"Platform","pages":[{"title":"Platform","href":""}]},{"tab":"Vitess","groups":[{"group":" ","pages":[{"title":"PlanetScale for Vitess","sidebarTitle":"Vitess","href":"/vitess"}]},{"group":"Pricing","pages":[{"title":"Pricing","href":"/vitess/pricing"}]},{"group":"Platform","pages":[{"group":"Getting Started","pages":[{"title":"PlanetScale Vitess architecture","sidebarTitle":"Vitess architecture","href":"/vitess/architecture"},{"title":"PlanetScale workflow for Vitess","sidebarTitle":"Vitess workflow","href":"/vitess/best-practices"},{"title":"PlanetScale Vitess quickstart guide","sidebarTitle":"Step-by-step guide","href":"/vitess/tutorials/planetscale-quick-start-guide"},{"title":"Cluster sizing","sidebarTitle":"Cluster sizing","href":"/plans/cluster-sizing"},{"title":"Cluster configuration","href":"/vitess/cluster-configuration"},{"title":"Disk autoscaling","href":"/vitess/cluster-configuration/disk-autoscaling"},{"title":"Cluster configuration parameters","sidebarTitle":"Parameters","href":"/vitess/cluster-configuration/parameters"},{"title":"Per-shard sizing","href":"/vitess/cluster-configuration/per-shard-sizing"},{"title":"Database replicas","sidebarTitle":"Replicas","href":"/vitess/replicas"},{"title":"Foreign key constraints","sidebarTitle":"Foreign key constraints support","href":"/vitess/foreign-key-constraints"},{"title":"Web console","sidebarTitle":"Web console","href":"/vitess/web-console"},{"title":"PlanetScale terminology","sidebarTitle":"Terminology","href":"/vitess/terminology"},{"title":"MySQL compatibility","sidebarTitle":"MySQL compatibility","href":"/vitess/mysql-compatibility"}]},{"group":"Imports","pages":[{"title":"Discovery Tool","sidebarTitle":"Discovery tool","href":"/vitess/imports/discovery-tool"},{"title":"What are workflows?","sidebarTitle":"Workflows","href":"/vitess/scaling/workflows"},{"group":"Database imports","pages":[{"title":"Database imports","href":"/vitess/imports/database-imports"},{"title":"Import public IP addresses","href":"/vitess/imports/import-tool-migration-addresses"},{"title":"Import user permissions","href":"/vitess/imports/import-tool-user-requirements"},{"title":"Import troubleshooting","href":"/vitess/imports/import-troubleshooting"}]},{"group":"MySQL to PlanetScale Vitess migration","pages":[{"title":"Amazon Aurora migration guide","sidebarTitle":"Amazon Aurora","href":"/vitess/imports/amazon-aurora-migration-guide"},{"title":"AWS RDS migration guide","sidebarTitle":"Amazon RDS","href":"/vitess/imports/aws-rds-migration-guide"},{"title":"Azure Database for MySQL migration guide","sidebarTitle":"Azure","href":"/vitess/imports/azure-database-for-mysql-migration-guide"},{"title":"DigitalOcean database migration guide","sidebarTitle":"DigitalOcean","href":"/vitess/imports/digitalocean-database-migration-guide"},{"title":"GCP Cloud SQL Migration Guide","sidebarTitle":"GCP Cloud SQL","href":"/vitess/imports/gcp-cloudsql-migration-guide"},{"title":"MariaDB migration guide","sidebarTitle":"MariaDB","href":"/vitess/imports/mariadb-migration-guide"}]},{"group":"Postgres to PlanetScale Vitess migration","pages":[{"title":"Postgres to Vitess imports","sidebarTitle":"Postgres to Vitess overview","href":"/vitess/imports/postgres"},{"title":"Postgres to PlanetScale for Vitess migration guide","sidebarTitle":"Postgres to Vitess directly","href":"/vitess/imports/postgres-planetscale-migration-guide"},{"title":"Postgres to MySQL to PlanetScale migration guide","sidebarTitle":"Postgres to Vitess with intermediate MySQL","href":"/vitess/imports/postgres-mysql-planetscale-migration-guide"}]}]},{"group":"Connecting","pages":[{"title":"Connect any application to PlanetScale","sidebarTitle":"Connect any app","href":"/vitess/tutorials/connect-any-application"},{"title":"Connect a MySQL GUI to PlanetScale","sidebarTitle":"Connect a MySQL GUI","href":"/vitess/tutorials/connect-mysql-gui"},{"title":"Connection strings","href":"/vitess/connecting/connection-strings"},{"title":"Network latency","href":"/vitess/connecting/network-latency"},{"group":"MCP","pages":[{"title":"PlanetScale Model Context Protocol (MCP)","sidebarTitle":"Overview","href":"/mcp-server"},{"title":"Authenticate the MCP server with a service token","sidebarTitle":"Service tokens","href":"/mcp/service-token"}]},{"title":"Self-improving database","sidebarTitle":"Self-improving database","href":"/self-improving-database"},{"title":"PlanetScale Terraform provider","sidebarTitle":"Terraform provider","href":"/terraform"},{"group":"Private connections","pages":[{"title":"Connecting to PlanetScale privately on AWS","sidebarTitle":"AWS PrivateLink","href":"/vitess/connecting/private-connections"},{"title":"Connecting to PlanetScale privately on GCP","sidebarTitle":"GCP Private Service Connect","href":"/vitess/connecting/private-connections-gcp"}]}]},{"group":"Schema changes","pages":[{"title":"Non-blocking schema changes","href":"/vitess/schema-changes"},{"title":"Safe migrations","href":"/vitess/schema-changes/safe-migrations"},{"group":"Branching","pages":[{"title":"Branching","sidebarTitle":"Using branches","href":"/vitess/schema-changes/branching"},{"title":"Data Branching®","href":"/vitess/schema-changes/data-branching"}]},{"group":"Deploy requests","pages":[{"title":"Deploy requests","sidebarTitle":"Using deploy requests","href":"/vitess/schema-changes/deploy-requests"},{"title":"Throttling deploy requests","href":"/vitess/schema-changes/throttling-deploy-requests"},{"title":"Aggressive deploy request cutover","sidebarTitle":"Aggressive cutover","href":"/vitess/schema-changes/aggressive-cutover"},{"title":"Long-running transactions","sidebarTitle":"Long-running transactions","href":"/vitess/schema-changes/long-running-transactions"},{"title":"Column cannot be null","sidebarTitle":"Column cannot be null","href":"/vitess/schema-changes/column-cannot-be-null"},{"title":"Column has no default value","sidebarTitle":"Column has no default value","href":"/vitess/schema-changes/column-has-no-default"},{"title":"Duplicate entry for unique key","sidebarTitle":"Duplicate entry","href":"/vitess/schema-changes/duplicate-entry"},{"title":"Value does not fit the new column","sidebarTitle":"Value does not fit column","href":"/vitess/schema-changes/value-does-not-fit-column"},{"title":"Constraint not found","sidebarTitle":"Constraint not found","href":"/vitess/schema-changes/constraint-not-found"},{"title":"Foreign key missing unique key","sidebarTitle":"Foreign key missing unique key","href":"/vitess/schema-changes/foreign-key-missing-unique-key"},{"title":"Earlier migration failed","sidebarTitle":"Earlier migration failed","href":"/vitess/schema-changes/earlier-migration-failed"}]},{"group":"Schema lint errors","pages":[{"title":"Schema lint errors","sidebarTitle":"Schema lint errors","href":"/vitess/schema-changes/schema-lint-errors"},{"title":"UNSPECIFIED schema lint error","sidebarTitle":"UNSPECIFIED","href":"/vitess/schema-changes/schema-lint-errors/unspecified"},{"title":"NO_UNIQUE_KEY schema lint error","sidebarTitle":"NO_UNIQUE_KEY","href":"/vitess/schema-changes/schema-lint-errors/no-unique-key"},{"title":"FOREIGN_KEYS_DISALLOWED schema lint error","sidebarTitle":"FOREIGN_KEYS_DISALLOWED","href":"/vitess/schema-changes/schema-lint-errors/foreign-keys-disallowed"},{"title":"INVALID_CHARSET schema lint error","sidebarTitle":"INVALID_CHARSET","href":"/vitess/schema-changes/schema-lint-errors/invalid-charset"},{"title":"UNSUPPORTED_FEATURE schema lint error","sidebarTitle":"UNSUPPORTED_FEATURE","href":"/vitess/schema-changes/schema-lint-errors/unsupported-feature"},{"title":"UNSUPPORTED_SHARDED_FEATURE schema lint error","sidebarTitle":"UNSUPPORTED_SHARDED_FEATURE","href":"/vitess/schema-changes/schema-lint-errors/unsupported-sharded-feature"},{"title":"INVALID_VSCHEMA schema lint error","sidebarTitle":"INVALID_VSCHEMA","href":"/vitess/schema-changes/schema-lint-errors/invalid-vschema"},{"title":"DUPLICATE_ENUM_VALUE schema lint error","sidebarTitle":"DUPLICATE_ENUM_VALUE","href":"/vitess/schema-changes/schema-lint-errors/duplicate-enum-value"},{"title":"UNSUPPORTED_PARTITIONING_FEATURE schema lint error","sidebarTitle":"UNSUPPORTED_PARTITIONING_FEATURE","href":"/vitess/schema-changes/schema-lint-errors/unsupported-partitioning-feature"},{"title":"INVALID_TABLE_REFERENCED_IN_VIEW schema lint error","sidebarTitle":"INVALID_TABLE_REFERENCED_IN_VIEW","href":"/vitess/schema-changes/schema-lint-errors/invalid-table-referenced-in-view"},{"title":"INVALID_COLUMN_REFERENCED_IN_VIEW schema lint error","sidebarTitle":"INVALID_COLUMN_REFERENCED_IN_VIEW","href":"/vitess/schema-changes/schema-lint-errors/invalid-column-referenced-in-view"},{"title":"BLOB_IN_UNIQUE_KEY schema lint error","sidebarTitle":"BLOB_IN_UNIQUE_KEY","href":"/vitess/schema-changes/schema-lint-errors/blob-in-unique-key"},{"title":"PARTIAL_KEY_IN_UNIQUE_KEY schema lint error","sidebarTitle":"PARTIAL_KEY_IN_UNIQUE_KEY","href":"/vitess/schema-changes/schema-lint-errors/partial-key-in-unique-key"},{"title":"FOREIGN_KEYS_CIRCULAR_DEPENDENCY schema lint error","sidebarTitle":"FOREIGN_KEYS_CIRCULAR_DEPENDENCY","href":"/vitess/schema-changes/schema-lint-errors/foreign-keys-circular-dependency"},{"title":"FOREIGN_KEYS_NONEXISTENT_TABLE schema lint error","sidebarTitle":"FOREIGN_KEYS_NONEXISTENT_TABLE","href":"/vitess/schema-changes/schema-lint-errors/foreign-keys-nonexistent-table"},{"title":"FOREIGN_KEYS_REFERENCED_VIEW schema lint error","sidebarTitle":"FOREIGN_KEYS_REFERENCED_VIEW","href":"/vitess/schema-changes/schema-lint-errors/foreign-keys-referenced-view"},{"title":"FOREIGN_KEYS_UNRESOLVED schema lint error","sidebarTitle":"FOREIGN_KEYS_UNRESOLVED","href":"/vitess/schema-changes/schema-lint-errors/foreign-keys-unresolved"},{"title":"INVALID_ROUTING_RULES schema lint error","sidebarTitle":"INVALID_ROUTING_RULES","href":"/vitess/schema-changes/schema-lint-errors/invalid-routing-rules"}]},{"group":"Schema changes","pages":[{"title":"How to make different types of schema changes","href":"/vitess/schema-changes/how-to-make-different-types-of-schema-changes"},{"title":"PlanetScale GitHub Actions","sidebarTitle":"Automating with GitHub Actions","href":"/vitess/integrations/github-actions"},{"title":"Handling table and column renames","href":"/vitess/schema-changes/handling-table-and-column-renames"},{"title":"Online DDL change unique keys","sidebarTitle":"Changing primary and unique keys","href":"/vitess/schema-changes/onlineddl-change-unique-keys"}]}]},{"group":"Monitoring","pages":[{"group":"PlanetScale Insights","pages":[{"title":"Query Insights","href":"/vitess/monitoring/query-insights"},{"title":"Inspect live Vitess connections","sidebarTitle":"Connections","href":"/vitess/monitoring/connections"},{"title":"Tags","href":"/vitess/monitoring/query-tags"},{"title":"Anomalies","sidebarTitle":"Anomalies","href":"/vitess/monitoring/anomalies"},{"title":"Errors","sidebarTitle":"Errors","href":"/vitess/monitoring/errors"},{"title":"Schema recommendations","sidebarTitle":"Schema recommendations","href":"/vitess/monitoring/schema-recommendations"}]},{"group":"Prometheus","pages":[{"title":"Prometheus","sidebarTitle":"Connecting Prometheus","href":"/vitess/integrations/prometheus"},{"title":"Grafana Dashboard for PlanetScale Branches","sidebarTitle":"Visualizing in Grafana","href":"/vitess/tutorials/prometheus-metrics-grafana"},{"title":"Sending Prometheus Metrics to Datadog","sidebarTitle":"Collecting in the Datadog Agent","href":"/vitess/tutorials/prometheus-metrics-datadog"},{"title":"Sending Prometheus Metrics to New Relic","sidebarTitle":"Forwarding metrics to New Relic","href":"/vitess/tutorials/prometheus-metrics-newrelic"},{"title":"Prometheus metrics","sidebarTitle":"Metrics List","href":"/vitess/integrations/prometheus-metrics"}]},{"group":"Integrations","pages":[{"title":"Datadog integration","sidebarTitle":"Datadog (legacy)","href":"/vitess/integrations/datadog"}]},{"group":"Database auditing","pages":[{"title":"Audit log","href":"/vitess/audit-log"}]}]},{"group":"Backups","pages":[{"title":"Back up and restore","href":"/vitess/backups"}]},{"group":"Scaling","pages":[{"title":"Cluster sizing","sidebarTitle":"Cluster sizing","href":"/vitess/scaling/cluster-sizing"},{"title":"Cluster configuration","href":"/vitess/scaling/cluster-configuration"},{"title":"Per-shard sizing","href":"/vitess/cluster-configuration/per-shard-sizing"},{"title":"Database replicas","sidebarTitle":"Replicas","href":"/vitess/scaling/replicas"},{"title":"Read-only regions","href":"/vitess/scaling/read-only-regions"},{"title":"Vitess system limits","href":"/vitess/scaling/planetscale-system-limits"},{"title":"VTGates","href":"/vitess/scaling/vtgates"},{"title":"Deleting a database","sidebarTitle":"Deleting a database","href":"/vitess/delete-a-database"}]},{"group":"Sharding","pages":[{"group":"Overview","pages":[{"title":"Sharding with PlanetScale","href":"/vitess/sharding"},{"title":"What are workflows?","sidebarTitle":"Workflows","href":"/vitess/scaling/workflows"}]},{"group":"Guides","pages":[{"title":"Shard existing tables with MoveTables","sidebarTitle":"Sharding quickstart","href":"/vitess/sharding/sharding-quickstart"},{"title":"Change the number of shards with MoveTables","sidebarTitle":"Modifying the number of shards","href":"/vitess/sharding/sharding-a-sharded-keyspace"},{"title":"Sharding new tables","sidebarTitle":"Sharding new tables","href":"/vitess/sharding/sharding-new-tables"},{"title":"Avoiding cross-shard queries","href":"/vitess/sharding/avoiding-cross-shard-queries"},{"title":"Targeting the correct keyspace","sidebarTitle":"Keyspace targeting for ORMs and frameworks","href":"/vitess/sharding/targeting-correct-keyspace"},{"title":"Sequence Tables","sidebarTitle":"Creating sequence tables","href":"/vitess/sharding/sequence-tables"},{"title":"Pre-sharding checklist","sidebarTitle":"Pre-sharding checklist","href":"/vitess/sharding/pre-sharding-checklist"}]},{"group":"Concepts","pages":[{"title":"VSchema","sidebarTitle":"VSchema","href":"/vitess/sharding/vschema"},{"title":"ALTER VSCHEMA syntax reference","sidebarTitle":"ALTER VSCHEMA syntax","href":"/vitess/sharding/alter-vschema"},{"title":"Vindexes","sidebarTitle":"Vindexes","href":"/vitess/sharding/vindexes"},{"title":"What is a keyspace","sidebarTitle":"Keyspace","href":"/vitess/sharding/keyspaces"},{"title":"Sharding workflow state reference","sidebarTitle":"Sharding workflow state reference","href":"/vitess/sharding/sharding-workflow-state-reference"}]}]},{"group":"Vectors","pages":[{"title":"Vector search and storage","sidebarTitle":"Vectors overview","href":"/vitess/vectors"},{"title":"Vector database terminology and concepts","sidebarTitle":"Concepts and terminology","href":"/vitess/vectors/terminology-and-concepts"},{"title":"Common use cases for Vector search","sidebarTitle":"Use cases","href":"/vitess/vectors/use-cases"},{"title":"Vectors with an ORM","sidebarTitle":"Using with an ORM","href":"/vitess/vectors/using-with-an-orm"},{"title":"Vector type and index reference","sidebarTitle":"Reference","href":"/vitess/vectors/reference"}]},{"group":"Security","pages":[{"title":"Security and compliance","sidebarTitle":"Overview","href":"/security"},{"title":"Vulnerability disclosure","href":"/security/vulnerability-disclosure"},{"group":"Database security","pages":[{"title":"Connection strings","href":"/vitess/security/connection-strings"},{"title":"Connecting to PlanetScale securely","sidebarTitle":"Secure connections","href":"/vitess/connecting/secure-connections"},{"title":"Password roles","href":"/vitess/security/password-roles"}]},{"group":"Account access","pages":[{"title":"Authentication methods","href":"/security/authentication-methods"},{"title":"Multi-factor authentication","href":"/security/multi-factor-authentication"},{"title":"Account password security","href":"/security/account-password-security"},{"title":"Security log","href":"/security/security-log"}]},{"group":"Organization access","pages":[{"title":"Access control","href":"/security/access-control"},{"title":"Audit log","href":"/security/audit-log"},{"title":"Teams","sidebarTitle":"Teams","href":"/security/teams"},{"title":"Single sign-on","href":"/security/sso"}]},{"group":"Database protection","pages":[{"title":"Deletion protection","sidebarTitle":"Deletion protection","href":"/security/deletion-protection"},{"title":"Require multiple administrators for deletion","sidebarTitle":"Multiple admins for deletion","href":"/security/multiple-admins-required-for-deletion"}]}]},{"group":"Troubleshooting","pages":[{"title":"MySQL compatibility","sidebarTitle":"MySQL compatibility","href":"/vitess/troubleshooting/mysql-compatibility"},{"title":"Vitess system limits","href":"/vitess/troubleshooting/planetscale-system-limits"},{"title":"PlanetScale database error reference","sidebarTitle":"Errors reference","href":"/vitess/troubleshooting/errors"},{"title":"Out of memory (OOM)","href":"/vitess/troubleshooting/out-of-memory"}]}]},{"group":"Integrations","pages":[{"group":"Development","pages":[{"title":"Cloudflare Workers database integration","sidebarTitle":"Cloudflare Workers","href":"/vitess/integrations/cloudflare-workers"},{"title":"Netlify","url":"https://docs.netlify.com/extend/install-and-use/setup-guides/planetscale-integration/","href":"/vitess/integrations/netlify"},{"title":"Deploy to Vercel","sidebarTitle":"Vercel","href":"/vitess/tutorials/deploy-to-vercel"},{"title":"AWS Lambda connection strings","sidebarTitle":"AWS Lambda","href":"/vitess/tutorials/aws-lambda-connection-strings"}]},{"group":"ETL","pages":[{"title":"PlanetScale Connect","sidebarTitle":"Overview","href":"/vitess/etl"},{"title":"Airbyte integration","sidebarTitle":"Airbyte","href":"/vitess/integrations/airbyte"},{"title":"Artie integration","sidebarTitle":"Artie","href":"/vitess/integrations/artie"},{"title":"Fivetran integration","sidebarTitle":"Fivetran","href":"/vitess/integrations/fivetran"},{"title":"Hightouch integration","sidebarTitle":"Hightouch","href":"/vitess/integrations/hightouch"},{"title":"Stitch integration","sidebarTitle":"Stitch","href":"/vitess/integrations/stitch"},{"group":"Debezium","pages":[{"title":"Debezium connector for PlanetScale","sidebarTitle":"Debezium","href":"/vitess/integrations/debezium"},{"title":"Debezium connector on Confluent Cloud","sidebarTitle":"Confluent Cloud","href":"/vitess/integrations/debezium-confluent"}]}]},{"group":"Monitoring","pages":[{"title":"Prometheus","sidebarTitle":"Prometheus","href":"/vitess/tutorials/prometheus"},{"title":"Grafana Dashboard for PlanetScale Branches","sidebarTitle":"Grafana","href":"/vitess/monitoring/prometheus-metrics-grafana"},{"title":"Sending Prometheus Metrics to Datadog","sidebarTitle":"Datadog Agent","href":"/vitess/monitoring/prometheus-metrics-datadog"},{"title":"Sending Prometheus Metrics to New Relic","sidebarTitle":"New Relic","href":"/vitess/monitoring/prometheus-metrics-newrelic"},{"title":"Datadog integration","sidebarTitle":"Datadog (legacy)","href":"/vitess/monitoring/datadog"}]},{"group":"Billing","pages":[{"title":"Vantage integration","sidebarTitle":"Vantage","href":"/vitess/integrations/vantage"}]}]},{"group":"Guides","pages":[{"group":"Frameworks and ORMs","pages":[{"title":"Connect a Django application to PlanetScale","sidebarTitle":"Django","description":null,"href":"/vitess/tutorials/connect-django-app"},{"group":"Golang","pages":[{"title":"Connect a Go application to PlanetScale","sidebarTitle":"Go quickstart","href":"/vitess/tutorials/connect-go-app"},{"title":"Connect a Go application using GORM to PlanetScale","sidebarTitle":"Gorm","description":null,"href":"/vitess/tutorials/connect-go-gorm-app"}]},{"group":"Next.js","pages":[{"title":"Connect a Next.js application to PlanetScale","sidebarTitle":"Next.js quickstart","href":"/vitess/tutorials/connect-nextjs-app"},{"title":"Next.js and PlanetScale Netlify template tutorial","sidebarTitle":"Next.js and Netlify template","href":"/vitess/tutorials/nextjs-planetscale-netlify-template"},{"title":"Deploy to Vercel","sidebarTitle":"Deploy to Vercel","href":"/vitess/tutorials/nextjs-deploy-to-vercel"},{"title":"Deploy to Netlify","sidebarTitle":"Deploy to Netlify","href":"/vitess/tutorials/deploy-to-netlify"}]},{"title":"Connect a Node.js application to PlanetScale","sidebarTitle":"Node.js","href":"/vitess/tutorials/connect-nodejs-app"},{"group":"PHP","pages":[{"title":"Connect a PHP application to PlanetScale","sidebarTitle":"PHP quickstart","href":"/vitess/tutorials/connect-php-app"},{"title":"Connect a Laravel application to PlanetScale","sidebarTitle":"Laravel quickstart","href":"/vitess/tutorials/connect-laravel-app"},{"title":"Connect a Symfony application to PlanetScale","sidebarTitle":"Symfony quickstart","href":"/vitess/tutorials/connect-symfony-app"}]},{"group":"Prisma","pages":[{"title":"Using PlanetScale with Prisma","sidebarTitle":"Prisma guide","href":"/vitess/tutorials/using-planetscale-with-prisma"},{"title":"Automatic Prisma migrations","sidebarTitle":"Automatic Prisma migrations","href":"/vitess/tutorials/automatic-prisma-migrations"},{"title":"Using the PlanetScale serverless driver with Prisma","sidebarTitle":"Serverless driver with Prisma","href":"/vitess/tutorials/planetscale-serverless-driver-prisma-example"},{"title":"Prisma best practices","href":"/vitess/tutorials/prisma-best-practices"}]},{"group":"Ruby on Rails","pages":[{"title":"Connect a Rails application to PlanetScale","sidebarTitle":"Ruby on Rails quickstart","href":"/vitess/tutorials/connect-rails-app"},{"title":"Automatic Rails migrations","sidebarTitle":"Automatic Rails migrations","href":"/vitess/tutorials/automatic-rails-migrations"}]}]},{"group":"Deployments","pages":[{"title":"Deploy to Netlify","sidebarTitle":"Deploy to Netlify","href":"/vitess/tutorials/deployments/deploy-to-netlify"},{"title":"Deploy to Vercel","href":"/vitess/tutorials/deployments/deploy-to-vercel"},{"title":"Next.js and PlanetScale Netlify template tutorial","sidebarTitle":"Next.js and Netlify template","href":"/vitess/tutorials/deployments/nextjs-planetscale-netlify-template"},{"title":"Deploy a Django app to Heroku","href":"/vitess/tutorials/deploy-a-django-app-to-heroku"}]},{"group":"Monitoring","pages":[{"title":"Grafana Dashboard for PlanetScale Branches","sidebarTitle":"Visualizing in Grafana","href":"/vitess/guides/prometheus-metrics-grafana"},{"title":"Sending Prometheus Metrics to Datadog","sidebarTitle":"Sending Prometheus Metrics to Datadog","href":"/vitess/guides/prometheus-metrics-datadog"},{"title":"Sending Prometheus Metrics to New Relic","sidebarTitle":"Sending Prometheus Metrics to New Relic","href":"/vitess/guides/prometheus-metrics-newrelic"}]},{"group":"Serverless JavaScript driver","pages":[{"title":"PlanetScale serverless driver for JavaScript","sidebarTitle":"Using the serverless driver","href":"/vitess/tutorials/planetscale-serverless-driver"},{"title":"Node.js example using the PlanetScale serverless driver","sidebarTitle":"Node.js example","href":"/vitess/tutorials/planetscale-serverless-driver-node-example"},{"title":"Using the PlanetScale serverless driver with Prisma","sidebarTitle":"Prisma example","href":"/vitess/tutorials/prisma-example"}]},{"group":"MySQL","pages":[{"title":"Operating without foreign key constraints","sidebarTitle":"Operating without foreign key constraints","href":"/vitess/operating-without-foreign-key-constraints"},{"title":"How to make different types of schema changes","sidebarTitle":"Performing different types of schema changes","href":"/vitess/how-to-make-different-types-of-schema-changes"},{"title":"How Online Schema Change tools work","sidebarTitle":"How online schema change tools work","href":"/vitess/schema-changes/how-online-schema-change-tools-work"},{"title":"Online DDL change unique keys","sidebarTitle":"OnlineDDL","href":"/vitess/onlineddl-change-unique-keys"},{"title":"Strategies for maintaining referential integrity","sidebarTitle":"Changing unique keys","href":"/vitess/strategies-for-maintaining-referential-integrity"},{"title":"Handling table and column renames","sidebarTitle":"Renaming columns and tables","href":"/vitess/handling-table-and-column-renames"},{"title":"Comparison of Online Schema Change tools","sidebarTitle":"Online schema change tool comparison","href":"/vitess/schema-changes/online-schema-change-tools-comparison"}]}]}]},{"tab":"Neki","pages":[{"title":"Neki","href":"/neki"}]},{"tab":"Postgres","pages":[{"title":"Postgres","href":"/postgres"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api/reference/getting-started-with-planetscale-api"}]},{"tab":"CLI Reference","pages":[{"title":"CLI Reference","href":"/cli"}]}]},"basePath":"","title":"Connect a Go application to PlanetScale - PlanetScale","buildId":"dpl_4RHMRqtvdHvKgaEfTTjFqjzja3B6","deploymentId":"dpl_4RHMRqtvdHvKgaEfTTjFqjzja3B6","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-CSp1VigC.js","DynamicMarkdown-Dnt6YhtR.js","zoom-image-lightbox-CZTaVDTN.js","lightbox-handle-r17bVUz3.js"]}