<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">"use strict";(self.webpackChunkbob=self.webpackChunkbob||[]).push([[9557],{3905:(e,t,n)=&gt;{n.d(t,{Zo:()=&gt;c,kt:()=&gt;g});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r&lt;o.length;r++)n=o[r],t.indexOf(n)&gt;=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r&lt;o.length;r++)n=o[r],t.indexOf(n)&gt;=0||Object.prototype.propertyIsEnumerable.call(e,n)&amp;&amp;(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&amp;&amp;(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),u=p(n),d=a,g=u["".concat(s,".").concat(d)]||u[d]||m[d]||o;return n?r.createElement(g,l(l({ref:t},c),{},{components:n})):r.createElement(g,l({ref:t},c))}));function g(e,t){var n=arguments,a=t&amp;&amp;t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=d;var i={};for(var s in t)hasOwnProperty.call(t,s)&amp;&amp;(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:a,l[1]=i;for(var p=2;p&lt;o;p++)l[p]=n[p];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},4111:(e,t,n)=&gt;{n.r(t),n.d(t,{assets:()=&gt;f,contentTitle:()=&gt;d,default:()=&gt;k,frontMatter:()=&gt;m,metadata:()=&gt;g,toc:()=&gt;b});var r=n(3905),a=Object.defineProperty,o=Object.defineProperties,l=Object.getOwnPropertyDescriptors,i=Object.getOwnPropertySymbols,s=Object.prototype.hasOwnProperty,p=Object.prototype.propertyIsEnumerable,c=(e,t,n)=&gt;t in e?a(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,u=(e,t)=&gt;{for(var n in t||(t={}))s.call(t,n)&amp;&amp;c(e,n,t[n]);if(i)for(var n of i(t))p.call(t,n)&amp;&amp;c(e,n,t[n]);return e};const m={sidebar_position:12,title:"MySQL Driver",description:"ORM Generation for MySQL"},d="Bob Gen for MySQL",g={unversionedId:"code-generation/mysql",id:"code-generation/mysql",title:"MySQL Driver",description:"ORM Generation for MySQL",source:"@site/docs/code-generation/mysql.md",sourceDirName:"code-generation",slug:"/code-generation/mysql",permalink:"/docs/code-generation/mysql",draft:!1,editUrl:"https://github.com/stephenafamo/bob/tree/main/website/docs/code-generation/mysql.md",tags:[],version:"current",sidebarPosition:12,frontMatter:{sidebar_position:12,title:"MySQL Driver",description:"ORM Generation for MySQL"},sidebar:"tutorialSidebar",previous:{title:"PostgreSQL Driver",permalink:"/docs/code-generation/psql"},next:{title:"SQLite Driver",permalink:"/docs/code-generation/sqlite"}},f={},b=[{value:"Usage",id:"usage",level:2},{value:"Driver Configuration",id:"driver-configuration",level:3},{value:"Link to general configuration and usage",id:"link-to-general-configuration-and-usage",level:4}],y={toc:b};function k(e){var t,n=e,{components:a}=n,c=((e,t)=&gt;{var n={};for(var r in e)s.call(e,r)&amp;&amp;t.indexOf(r)&lt;0&amp;&amp;(n[r]=e[r]);if(null!=e&amp;&amp;i)for(var r of i(e))t.indexOf(r)&lt;0&amp;&amp;p.call(e,r)&amp;&amp;(n[r]=e[r]);return n})(n,["components"]);return(0,r.kt)("wrapper",(t=u(u({},y),c),o(t,l({components:a,mdxType:"MDXLayout"}))),(0,r.kt)("h1",u({},{id:"bob-gen-for-mysql"}),"Bob Gen for MySQL"),(0,r.kt)("p",null,"Generates an ORM based on a MySQL database schema"),(0,r.kt)("h2",u({},{id:"usage"}),"Usage"),(0,r.kt)("pre",null,(0,r.kt)("code",u({parentName:"pre"},{className:"language-sh"}),"# With env variable\nMYSQL_DSN=user:pass@tcp(host:port)/dbname go run github.com/stephenafamo/bob/gen/bobgen-mysql@latest\n\n# With configuration file\ngo run github.com/stephenafamo/bob/gen/bobgen-mysql@latest -c ./config/bobgen.yaml\n")),(0,r.kt)("h3",u({},{id:"driver-configuration"}),"Driver Configuration"),(0,r.kt)("h4",u({},{id:"link-to-general-configuration-and-usage"}),(0,r.kt)("a",u({parentName:"h4"},{href:"./configuration"}),"Link to general configuration and usage")),(0,r.kt)("p",null,"The configuration for the MySQL driver must all be prefixed by the driver name. You must use a configuration file or environment variables for configuring the database driver."),(0,r.kt)("p",null,"In the configuration file for MySQL for example you would do:"),(0,r.kt)("pre",null,(0,r.kt)("code",u({parentName:"pre"},{className:"language-yaml"}),'mysql:\n  dsn: "user:pass@tcp(host:port)/dbname"\n')),(0,r.kt)("p",null,"When you use an environment variable it must also be prefixed by the driver name:"),(0,r.kt)("pre",null,(0,r.kt)("code",u({parentName:"pre"},{className:"language-sh"}),'MYSQL_DSN="user:pass@tcp(host:port)/dbname"\n')),(0,r.kt)("p",null,"The values that exist for the drivers:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",u({parentName:"tr"},{align:null}),"Name"),(0,r.kt)("th",u({parentName:"tr"},{align:null}),"Description"),(0,r.kt)("th",u({parentName:"tr"},{align:null}),"Default"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",u({parentName:"tr"},{align:null}),"dsn"),(0,r.kt)("td",u({parentName:"tr"},{align:null}),"URL to connect to"),(0,r.kt)("td",u({parentName:"tr"},{align:null}))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",u({parentName:"tr"},{align:null}),"output"),(0,r.kt)("td",u({parentName:"tr"},{align:null}),"Folder for generated files"),(0,r.kt)("td",u({parentName:"tr"},{align:null}),'"models"')),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",u({parentName:"tr"},{align:null}),"pkgname"),(0,r.kt)("td",u({parentName:"tr"},{align:null}),"Package name for generated code"),(0,r.kt)("td",u({parentName:"tr"},{align:null}),'"models"')),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",u({parentName:"tr"},{align:null}),"concurrency"),(0,r.kt)("td",u({parentName:"tr"},{align:null}),"How many tables to fetch in parallel"),(0,r.kt)("td",u({parentName:"tr"},{align:null}),"10")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",u({parentName:"tr"},{align:null}),"only"),(0,r.kt)("td",u({parentName:"tr"},{align:null}),"Only generate these"),(0,r.kt)("td",u({parentName:"tr"},{align:null}))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",u({parentName:"tr"},{align:null}),"except"),(0,r.kt)("td",u({parentName:"tr"},{align:null}),"Skip generation for these"),(0,r.kt)("td",u({parentName:"tr"},{align:null}))))),(0,r.kt)("p",null,"Example of Only/Except:"),(0,r.kt)("pre",null,(0,r.kt)("code",u({parentName:"pre"},{className:"language-yaml"}),'mysql:\n  # Removes public.migrations table, the name column from the addresses table, and\n  # secret_col of any table from being generated. Foreign keys that reference tables\n  # or columns that are no longer generated may cause problems.\n  except:\n    public.migrations:\n    public.addresses:\n      - name\n    "*":\n      - secret_col\n')))}k.isMDXComponent=!0}}]);</pre></body></html>