db-studio 1.7.5 → 1.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core-dist/assets/_pathlessLayout-Dj-vL1ro.js +2 -0
- package/dist/core-dist/assets/{_pathlessLayout-BgaXE7MD.js → _pathlessLayout-lti_XhXr.js} +1 -1
- package/dist/core-dist/assets/_queryId-BlmTSMat.js +1 -0
- package/dist/core-dist/assets/_table-B6EDRVAF.js +10 -0
- package/dist/core-dist/assets/_table-Bexe-PRD.js +1 -0
- package/dist/core-dist/assets/{cdoe-editor--A2X22TE.js → cdoe-editor-C6c3JNwJ.js} +2 -2
- package/dist/core-dist/assets/{chat-sidebar-Dq5zKCoF.js → chat-sidebar-A3iurUmg.js} +2 -2
- package/dist/core-dist/assets/{chunk-BO2N2NFS-CtrFqJix.js → chunk-BO2N2NFS-BWASkQ7r.js} +4 -4
- package/dist/core-dist/assets/{dist-C-W9v39G.js → dist-BY1hG1Ya.js} +1 -1
- package/dist/core-dist/assets/{dist-CWf64aZV.js → dist-CX0IXul5.js} +1 -1
- package/dist/core-dist/assets/{highlighted-body-OFNGDK62-Dqw8vrq4.js → highlighted-body-OFNGDK62-BEkQLPsL.js} +1 -1
- package/dist/core-dist/assets/{icons-CAZJbhBz.js → icons-BywMJ5og.js} +1 -1
- package/dist/core-dist/assets/index-B7KYpPyV.js +57 -0
- package/dist/core-dist/assets/index-Dv6o03bL.css +2 -0
- package/dist/core-dist/assets/{indexes-B2pdcOTa.js → indexes-WJgC6xdV.js} +1 -1
- package/dist/core-dist/assets/{logs-DItnmo1m.js → logs-BD6ggRmF.js} +1 -1
- package/dist/core-dist/assets/mermaid-GHXKKRXX-Cey0AJ6z.js +1 -0
- package/dist/core-dist/assets/queries.store-CwP6d13j.js +1 -0
- package/dist/core-dist/assets/{radix-ui-B93Y7STU.js → radix-ui-C0u6gLux.js} +1 -1
- package/dist/core-dist/assets/{react-dom-KMIgB9GW.js → react-dom-JJlWtX5O.js} +1 -1
- package/dist/core-dist/assets/runner-DT89R_pW.js +1 -0
- package/dist/core-dist/assets/{runner-tab-JuHyhE5I.js → runner-tab-CJfQuLY7.js} +3 -3
- package/dist/core-dist/assets/{schema-B1a8u8dT.js → schema-fNXfq0jj.js} +1 -1
- package/dist/core-dist/assets/{scroll-area-DIT4iXSA.js → scroll-area-A-6bIiHh.js} +1 -1
- package/dist/core-dist/assets/{table-Bq-YbPAX.js → table-NRrQaCx4.js} +1 -1
- package/dist/core-dist/assets/{tanstack-COAHM0pn.js → tanstack-DyfKDo5s.js} +1 -1
- package/dist/core-dist/assets/{tooltip-BPnX8rwL.js → tooltip-BSKLiphS.js} +1 -1
- package/dist/core-dist/assets/use-delete-column-JnaJwJqm.js +1 -0
- package/dist/core-dist/assets/{use-rate-limit-JM72I-Qe.js → use-rate-limit-Bdyk6haf.js} +1 -1
- package/dist/core-dist/assets/{visualizer-CQk0bfHO.js → visualizer-DBsb8pcK.js} +1 -1
- package/dist/core-dist/index.html +6 -6
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/core-dist/assets/_pathlessLayout-7XOLasgU.js +0 -2
- package/dist/core-dist/assets/_queryId-DHd3r8hS.js +0 -1
- package/dist/core-dist/assets/_table-BrQjEEkt.js +0 -8
- package/dist/core-dist/assets/_table-C6uuIAjA.js +0 -1
- package/dist/core-dist/assets/index-Cw94sGcz.js +0 -57
- package/dist/core-dist/assets/index-hsgkD-V0.css +0 -2
- package/dist/core-dist/assets/mermaid-GHXKKRXX--wNt23Qo.js +0 -1
- package/dist/core-dist/assets/queries.store-B8yJ67Tq.js +0 -1
- package/dist/core-dist/assets/runner-DGQg7j15.js +0 -1
- package/dist/core-dist/assets/use-delete-column-DfaGMfjR.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as ve}from"./rolldown-runtime-Bnw7wDfq.js";import{i as je,n as X,r as Se,t as ee,v as k,x as L}from"./tanstack-COAHM0pn.js";import{_ as Te,i as ze,k as De,m as we,n as Ae,p as qe,tt as Re,x as Ee}from"./icons-CAZJbhBz.js";import{Ot as Ie}from"./radix-ui-B93Y7STU.js";import{$ as ae,A as Pe,At as Ve,C as Ke,Ct as v,D as Fe,Dt as U,E as Oe,I as _e,L as se,M as ke,Mt as ne,Nt as Le,O as Ue,Ot as le,Pt as Me,Q as te,R,St as re,T as ie,Tt as M,X as oe,Y as O,Z as ce,_ as s,_t as $e,b as me,c as Be,d as D,et as de,f as g,g as I,gt as S,h as o,ht as p,j as K,jt as ue,k as Qe,kt as He,l as Ye,m as E,n as Ge,nt as Je,ot as $,p as h,rt as w,st as B,tt as he,u as N,v as xe,w as pe,y as Ze}from"./index-Cw94sGcz.js";import{i as fe,n as ye,t as be}from"./tooltip-BPnX8rwL.js";import{t as We}from"./use-delete-column-DfaGMfjR.js";function _(a){return He(Ye,a)}var C=ve(Re(),1),e=Ie(),Xe=({columnVirtualizer:a,row:n,rowVirtualizer:c,virtualPaddingLeft:t,virtualPaddingRight:u,virtualRow:i})=>{const m=n.getVisibleCells(),l=a.getVirtualItems();return(0,e.jsxs)("tr",{"data-index":i.index,ref:r=>c.measureElement(r),className:"flex absolute w-fit border-b items-center text-sm hover:bg-accent/20 data-[state=open]:bg-accent/40 [&_svg]:size-4",style:{transform:`translateY(${i.start}px)`},children:[t?(0,e.jsx)("td",{style:{display:"flex",width:t}}):null,l.map(r=>{const d=m[r.index];return(0,e.jsx)("td",{className:M("flex border-r border-zinc-800 h-8 items-center px-3 truncate"),style:{width:d.column.getSize()},children:X(d.column.columnDef.cell,d.getContext())},d.id)}),u?(0,e.jsx)("td",{style:{display:"flex",width:u}}):null]},n.id)},ea=({columnVirtualizer:a,table:n,tableContainerRef:c,virtualPaddingLeft:t,virtualPaddingRight:u})=>{const{rows:i}=n.getRowModel(),m=ee({count:i.length,estimateSize:()=>33,getScrollElement:()=>c.current,measureElement:typeof window<"u"&&navigator.userAgent.indexOf("Firefox")===-1?r=>r?.getBoundingClientRect().height:void 0,overscan:5}),l=m.getVirtualItems();return(0,e.jsx)("tbody",{style:{display:"grid",height:`${m.getTotalSize()}px`,position:"relative"},children:l.map(r=>{const d=i[r.index];return(0,e.jsx)(Xe,{columnVirtualizer:a,row:d,rowVirtualizer:m,virtualPaddingLeft:t,virtualPaddingRight:u,virtualRow:r},d.id)})})};function aa({header:a,table:n,label:c}){const t=n._getDefaultColumnDef(),u=(0,C.useCallback)(()=>{n.setColumnSizing(i=>{const m={...i};return delete m[a.column.id],m})},[a.column.id,n]);return(0,e.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":`Resize ${c} column`,"aria-valuenow":a.column.getSize(),"aria-valuemin":t.minSize,"aria-valuemax":t.maxSize,tabIndex:0,className:M("after:-translate-x-1/2 -right-px absolute top-0 z-50 h-full w-0.5 cursor-ew-resize touch-none select-none bg-border transition-opacity after:absolute after:inset-y-0 after:left-1/2 after:h-full after:w-[18px] after:content-[''] hover:bg-primary focus:bg-primary focus:outline-none",a.column.getIsResizing()?"bg-primary":"opacity-0 hover:opacity-100"),onDoubleClick:u,onMouseDown:a.getResizeHandler(),onTouchStart:a.getResizeHandler()})}var sa=(0,C.memo)(aa,(a,n)=>{const c=a.header.column,t=n.header.column;return!(c.getIsResizing()!==t.getIsResizing()||c.getSize()!==t.getSize()||a.label!==n.label)}),na=({columnVirtualizer:a,table:n,virtualPaddingLeft:c,virtualPaddingRight:t})=>{const u=a.getVirtualItems(),i=n.getState().columnSizingInfo.isResizingColumn;return(0,e.jsx)("thead",{className:"h-9 grid sticky top-0 z-10",children:n.getHeaderGroups().map(m=>(0,e.jsxs)("tr",{className:M("flex w-fit bg-black border-b border-zinc-800 items-center text-sm [&_svg]:size-4",i&&"pointer-events-none"),children:[c?(0,e.jsx)("th",{style:{display:"flex",width:c}}):null,u.map(l=>{const r=m.headers[l.index];return(0,e.jsxs)("th",{className:"relative h-full flex items-center border-r border-zinc-800 text-xs font-medium text-zinc-500",style:{width:r.getSize()},children:[(0,e.jsx)("div",{className:"flex w-full h-full items-center px-3",children:X(r.column.columnDef.header,r.getContext())}),r.column.getCanResize()&&(0,e.jsx)(sa,{header:r,table:n,label:r.column.id})]},r.id)}),t?(0,e.jsx)("th",{style:{display:"flex",width:t}}):null]},m.id))})},la=({table:a})=>{const n=a.getVisibleLeafColumns(),c=(0,C.useRef)(null),t=ee({count:n.length,estimateSize:l=>n[l].getSize(),getScrollElement:()=>c.current,horizontal:!0,overscan:3}),u=t.getVirtualItems();let i,m;return t&&u?.length&&(i=u[0]?.start??0,m=t.getTotalSize()-(u[u.length-1]?.end??0)),(0,e.jsx)("div",{className:"w-full flex-1 overflow-auto",ref:c,style:{position:"relative"},children:(0,e.jsxs)("table",{style:{display:"grid"},children:[(0,e.jsx)(na,{columnVirtualizer:t,table:a,virtualPaddingLeft:i,virtualPaddingRight:m}),(0,e.jsx)(ea,{columnVirtualizer:t,table:a,tableContainerRef:c,virtualPaddingLeft:i,virtualPaddingRight:m})]})})},ta=({columns:a,data:n})=>(0,e.jsx)(la,{table:Se({data:n,columns:a,getCoreRowModel:je(),enableColumnResizing:!0,columnResizeMode:"onChange"})}),y=o({db:s("Database name is required")}),ra=["pg","mysql","mssql","mongodb"],Q=N(ra,{message:"Invalid database type"}),Ua=y.extend({dbType:Q}),Ma=o({dbType:Q}),ia=o({tableName:s("Table name is required")}),f=o({columnName:s("Column name is required"),columnType:s("Column type is required"),defaultValue:s().optional(),isPrimaryKey:h().default(!1),isNullable:h().default(!1),isUnique:h().default(!1),isIdentity:h().default(!1),isArray:h().default(!1)}),$a=o({db:y.shape.db,tableName:ia.shape.tableName,columnName:f.shape.columnName,columnType:f.shape.columnType,defaultValue:f.shape.defaultValue,isPrimaryKey:f.shape.isPrimaryKey,isNullable:f.shape.isNullable,isUnique:f.shape.isUnique,isIdentity:f.shape.isIdentity,isArray:f.shape.isArray}),Ba=o({tableName:s("Table name is required"),data:I(s("Column name is required"),D())}),Qa=y.extend({cascade:s().optional().transform(a=>a==="true")}),j=o({tableName:s("Table name is required"),columnName:s("Column name is required")}),Ha=o({db:y.shape.db,tableName:j.shape.tableName,columnName:j.shape.columnName,cascade:h().optional()}),Ya=o({message:s("Message is required"),tableName:s("Table name is required"),columnName:s("Column name is required"),deletedCount:E("Deleted count is required").default(0)}),z=o({columnType:s("Column type is required"),isNullable:h(),defaultValue:s().nullable().optional()}),Ga=o({db:y.shape.db,tableName:j.shape.tableName,columnName:j.shape.columnName,columnType:z.shape.columnType,isNullable:z.shape.isNullable,defaultValue:z.shape.defaultValue}),Ja=o({tableName:s().min(1,"Table name is required"),records:g(I(s(),D())).min(1,"At least one record is required")}),Za=o({messages:g(o({role:N(["user","assistant","system","tool"]),content:s().nullable()})),data:o({conversationId:s().optional(),db:y.shape.db})}),oa=["text","boolean","number","enum","json","date","array"],ca=N(oa),ma=["int","bigint","smallint","numeric","float","double","money","tinyint","mediumint","bit","boolean","text","varchar","char","tinytext","mediumtext","longtext","json","jsonb","xml","uuid","date","time","timestamp","timestamptz","interval","datetime","year","bytea","inet","cidr","macaddr","macaddr8","point","line","polygon","binary","varbinary","blob","tinyblob","mediumblob","longblob","array","enum","set"],da=N(ma),Wa=o({columnName:s(),dataType:ca,dataTypeLabel:da,isNullable:h(),columnDefault:s().nullable(),isPrimaryKey:h(),isForeignKey:h(),referencedTable:s().nullable(),referencedColumn:s().nullable(),enumValues:g(s()).nullable()}),ua=["CASCADE","SET NULL","SET DEFAULT","RESTRICT","NO ACTION"],W=N(ua),ha=o({columnName:s("Column name is required"),columnType:s("Column type is required"),defaultValue:s().optional(),isPrimaryKey:h().default(!1),isNullable:h().default(!1),isUnique:h().default(!1),isIdentity:h().default(!1),isArray:h().default(!1)}),xa=o({columnName:s("Column name is required"),referencedTable:s("Referenced table is required"),referencedColumn:s("Referenced column is required"),onUpdate:W.default("NO ACTION"),onDelete:W.default("NO ACTION")}),Xa=o({tableName:s("Table name is required"),fields:g(ha).min(1,"At least one field is required"),foreignKeys:g(xa).optional()}),pa=o({name:s("Name is required"),size:s("Size is required"),owner:s("Owner is required"),encoding:s("Encoding is required")}),es=o({databases:g(pa),dbType:Q}),as=o({version:s("Version is required"),database:s("Database is required"),user:s("User is required"),host:s("Host is required").nullable(),port:E("Port is required").nullable(),active_connections:_("Active connections is required"),max_connections:_("Max connections is required")}),ss=o({tableName:s("Table name is required"),primaryKeys:g(o({columnName:s("Column name is required"),value:D()})).min(1,"At least one primary key is required")}),ns=y.extend({cascade:s().optional().transform(a=>a==="true")}),ls=o({query:s("Query is required")}),fa=["csv","xlsx","json"],ts=y.extend({format:N(fa,{message:"Invalid format. Supported formats: csv, xlsx, json"})}),ya=o({newColumnName:s("New column name is required")}),rs=o({db:y.shape.db,tableName:j.shape.tableName,columnName:j.shape.columnName,newColumnName:ya.shape.newColumnName}),is=o({columnName:s(),operator:s(),value:s()}),q=["asc","desc"],os=o({columnName:s(),direction:N(q)}),ba=o({limit:E(),total:E(),hasNextPage:h(),hasPreviousPage:h(),nextCursor:s().nullable(),prevCursor:s().nullable()}),cs=o({data:g(I(s(),Ze())),meta:ba}),ms=o({db:y.shape.db,cursor:s().optional(),limit:s().optional().default("50").transform(Number),direction:N(q).optional().default(q[0]),sort:s().optional().transform(a=>{if(!a)return"";try{const n=JSON.parse(a);return Array.isArray(n)?n:a}catch{return a}}),order:N(q).optional(),filters:s().optional().transform(a=>{if(!a)return[];try{return JSON.parse(a)}catch{return[]}})}),ds=o({tableName:s("Table name is required"),schemaName:s().optional(),rowCount:_("Row count is required")}),us=o({schema:s()}),hs=o({tableName:s("Table name is required"),primaryKey:s("Primary key is required").default("id"),updates:g(o({rowData:I(s("Column name is required"),D()),columnName:s("Column name is required"),value:D()},{message:"Each update must have a row data, column name, and value."})).min(1,"At least one update is required")}),Ca=a=>({...a,defaultValue:a.defaultValue?.trim()?a.defaultValue.trim():void 0}),ga=({tableName:a})=>{const n=L(),{closeSheet:c}=S(),{selectedDatabase:t}=$(),{mutateAsync:u,isPending:i}=k({mutationFn:async l=>{const r=new URLSearchParams({db:t??""});return(await B.post(`/tables/${encodeURIComponent(a)}/columns`,Ca(l),{params:r})).data.data},onSuccess:async()=>{await Promise.all([n.invalidateQueries({queryKey:[w.CACHE_KEYS.TABLE_COLUMNS,a],exact:!1}),n.invalidateQueries({queryKey:[w.CACHE_KEYS.TABLE_DATA,a],exact:!1})]),c("add-column")},onError:l=>{console.error("Error adding column:",l)}});return{addColumn:async(l,r)=>U.promise(u(l,r),{loading:"Adding column...",success:d=>d||"Column added successfully",error:d=>typeof d.details=="string"&&d.details||d.message||"Failed to add column"}),isAddingColumn:i}},Na=o({fields:xe([o({columnName:f.shape.columnName,columnType:f.shape.columnType,defaultValue:s(),isPrimaryKey:h(),isNullable:h(),isUnique:h(),isIdentity:h(),isArray:h()})])}),F={fields:[{columnName:"",columnType:"",defaultValue:"",isPrimaryKey:!1,isNullable:!0,isUnique:!1,isIdentity:!1,isArray:!1}]},va=()=>{const a=Me({control:Le().control,name:"fields.0.isPrimaryKey"});return(0,e.jsxs)("div",{className:"space-y-4",children:[(0,e.jsxs)("div",{className:"grid grid-cols-4 px-2",children:[(0,e.jsx)(p,{className:"text-xs",children:"Column Name"}),(0,e.jsx)(p,{className:"text-xs",children:"Column Type"}),(0,e.jsx)(p,{className:"text-xs",children:"Default Value"}),(0,e.jsx)(p,{className:"text-xs",children:"Primary"})]}),(0,e.jsx)("div",{className:"px-2 py-3",children:(0,e.jsxs)("div",{className:"grid grid-cols-4 gap-4",children:[(0,e.jsx)(Oe,{index:0,showForeignKeyButton:!1}),(0,e.jsx)(ie,{index:0}),(0,e.jsx)(pe,{index:0,isRequired:!1}),(0,e.jsxs)("div",{className:"flex gap-2",children:[(0,e.jsx)(Ke,{index:0}),(0,e.jsx)(Fe,{index:0,isDisabled:!!a})]})]})})]})},ja=({tableName:a})=>{const{closeSheet:n,isSheetOpen:c}=S(),{addColumn:t,isAddingColumn:u}=ga({tableName:a}),i=ne({mode:"onSubmit",defaultValues:F,resolver:le(Na)}),m=()=>{i.reset(F),n("add-column")},l=async r=>{await t(r.fields[0]),i.reset(F)};return(0,e.jsx)(me,{title:"Add column",description:`Add a new column to "${a}".`,open:c("add-column"),onOpenChange:r=>{r||m()},children:(0,e.jsx)(ue,{...i,children:(0,e.jsxs)("form",{onSubmit:i.handleSubmit(l),className:"space-y-6",children:[(0,e.jsx)(va,{}),(0,e.jsx)(re,{onCancel:m,isLoading:u})]})})})},H=$e()(a=>({editingColumn:null,setEditingColumn:n=>a({editingColumn:n})})),Sa=a=>({...a,defaultValue:a.defaultValue?.trim()?a.defaultValue.trim():null}),Ta=({tableName:a,columnName:n})=>{const c=L(),{closeSheet:t}=S(),{setEditingColumn:u}=H(),{selectedDatabase:i}=$(),{mutateAsync:m,isPending:l}=k({mutationFn:async d=>{const x=new URLSearchParams({db:i??""});return(await B.patch(`/tables/${encodeURIComponent(a)}/columns/${encodeURIComponent(n)}`,Sa(d),{params:x})).data.data},onSuccess:async()=>{await c.invalidateQueries({queryKey:[w.CACHE_KEYS.TABLE_COLUMNS,a],exact:!1}),u(null),t("edit-column")},onError:d=>{console.error("Error altering column:",d)}});return{alterColumn:async(d,x)=>U.promise(m(d,x),{loading:"Updating column...",success:b=>b||"Column updated successfully",error:b=>typeof b.details=="string"&&b.details||b.message||"Failed to update column"}),isAlteringColumn:l}},za=o({fields:xe([o({columnName:s(),columnType:z.shape.columnType,defaultValue:s(),isPrimaryKey:h(),isNullable:z.shape.isNullable,isUnique:h(),isIdentity:h(),isArray:h()})])}),A=a=>({fields:[{columnName:a?.columnName??"",columnType:a?.dataTypeLabel??"",defaultValue:a?.columnDefault??"",isPrimaryKey:!1,isNullable:a?.isNullable??!0,isUnique:!1,isIdentity:!1,isArray:a?.dataType==="array"}]}),Da=({tableName:a})=>{const{closeSheet:n,isSheetOpen:c}=S(),{editingColumn:t,setEditingColumn:u}=H(),i=ne({mode:"onSubmit",defaultValues:A(null),resolver:le(za)}),{alterColumn:m,isAlteringColumn:l}=Ta({tableName:a,columnName:t?.columnName??""});(0,C.useEffect)(()=>{i.reset(A(t))},[t,i]);const r=()=>{u(null),i.reset(A(null)),n("edit-column")},d=async x=>{await m({columnType:x.fields[0].columnType,isNullable:x.fields[0].isNullable,defaultValue:x.fields[0].defaultValue}),i.reset(A(null))};return(0,e.jsx)(me,{title:t?`Edit ${t.columnName}`:"Edit column",description:t?`Update the type, nullability, and default value for "${t.columnName}".`:"Update the selected column.",open:c("edit-column"),onOpenChange:x=>{x||r()},children:(0,e.jsx)(ue,{...i,children:(0,e.jsxs)("form",{onSubmit:i.handleSubmit(d),className:"space-y-6",children:[(0,e.jsxs)("div",{className:"space-y-4",children:[(0,e.jsxs)("div",{className:"space-y-2",children:[(0,e.jsx)(p,{htmlFor:"edit-column-name",children:"Column name"}),(0,e.jsx)(O,{id:"edit-column-name",value:t?.columnName??"",readOnly:!0,disabled:!0})]}),(0,e.jsxs)("div",{className:"space-y-2",children:[(0,e.jsx)(p,{children:"Column type"}),(0,e.jsx)(ie,{index:0})]}),(0,e.jsxs)("div",{className:"space-y-2",children:[(0,e.jsx)(p,{children:"Default value"}),(0,e.jsx)(pe,{index:0,isRequired:!1})]}),(0,e.jsx)(Ve,{control:i.control,name:"fields.0.isNullable",render:({field:x})=>(0,e.jsxs)("div",{className:"flex items-center gap-3 rounded-lg border border-zinc-800 px-3 py-3",children:[(0,e.jsx)(se,{id:"edit-column-nullable",checked:!!x.value,onCheckedChange:b=>x.onChange(b===!0)}),(0,e.jsxs)("div",{className:"space-y-1",children:[(0,e.jsx)(p,{htmlFor:"edit-column-nullable",className:"cursor-pointer",children:"Nullable"}),(0,e.jsx)("p",{className:"text-xs text-muted-foreground",children:"Allow this column to store NULL values."})]})]})})]}),(0,e.jsx)(re,{onCancel:r,isLoading:l})]})})})},wa=({tableName:a,columnName:n})=>{const c=L(),{selectedDatabase:t}=$(),{mutateAsync:u,isPending:i}=k({mutationFn:async l=>{const r=new URLSearchParams({db:t??""});return(await B.patch(`/tables/${encodeURIComponent(a)}/columns/${encodeURIComponent(n)}/rename`,l,{params:r})).data.data},onSuccess:async()=>{await Promise.all([c.invalidateQueries({queryKey:[w.CACHE_KEYS.TABLE_COLUMNS,a],exact:!1}),c.invalidateQueries({queryKey:[w.CACHE_KEYS.TABLE_DATA,a],exact:!1})])},onError:l=>{console.error("Error renaming column:",l)}});return{renameColumn:async(l,r)=>U.promise(u(l,r),{loading:"Renaming column...",success:d=>d||"Column renamed successfully",error:d=>typeof d.details=="string"&&d.details||d.message||"Failed to rename column"}),isRenamingColumn:i}},Aa=({col:a,tableName:n})=>{const{openSheet:c}=S(),{setEditingColumn:t}=H(),{renameColumn:u,isRenamingColumn:i}=wa({tableName:n,columnName:a.columnName}),{deleteColumn:m,isDeletingColumn:l}=We(),[r,d]=(0,C.useState)(!1),[x,b]=(0,C.useState)(!1),[Y,G]=(0,C.useState)(a.columnName),[J,Z]=(0,C.useState)(!1),Ce=()=>{t(a),c("edit-column")},P=T=>{d(T),T||G(a.columnName)},V=T=>{b(T),T||Z(!1)},ge=async()=>{await u({newColumnName:Y.trim()}),P(!1)},Ne=async()=>{await m({db:"",tableName:n,columnName:a.columnName,cascade:J}),V(!1)};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)(Ue,{children:[(0,e.jsx)(_e,{asChild:!0,children:(0,e.jsx)(v,{variant:"ghost",size:"icon-sm",children:(0,e.jsx)(De,{className:"size-4"})})}),(0,e.jsx)(Qe,{align:"end",className:"w-48",children:(0,e.jsxs)(Pe,{children:[(0,e.jsxs)(K,{onClick:Ce,children:[(0,e.jsx)(Te,{className:"size-4"}),"Edit Column"]}),(0,e.jsxs)(K,{onClick:()=>P(!0),children:[(0,e.jsx)(Ae,{className:"size-4"}),"Rename Column"]}),(0,e.jsx)(ke,{}),(0,e.jsxs)(K,{variant:"destructive",onClick:()=>V(!0),children:[(0,e.jsx)(ze,{className:"size-4"}),"Drop Column"]})]})})]}),(0,e.jsx)(qa,{columnName:a.columnName,newColumnName:Y,setNewColumnName:G,isOpen:r,onOpenChange:P,onRename:ge,isRenaming:i}),(0,e.jsx)(Ra,{columnName:a.columnName,isOpen:x,onOpenChange:V,cascadeDelete:J,setCascadeDelete:Z,onDrop:Ne,isDropping:l})]})},qa=({columnName:a,newColumnName:n,setNewColumnName:c,isOpen:t,onOpenChange:u,onRename:i,isRenaming:m})=>{const l=!n.trim()||n.trim()===a;return(0,e.jsx)(oe,{open:t,onOpenChange:u,children:(0,e.jsxs)(ce,{className:"max-w-md",children:[(0,e.jsxs)(de,{children:[(0,e.jsx)(he,{children:"Rename Column"}),(0,e.jsx)(te,{children:"Update the column name while keeping the rest of the schema unchanged."})]}),(0,e.jsxs)("div",{className:"space-y-4",children:[(0,e.jsxs)("div",{className:"space-y-2",children:[(0,e.jsx)(p,{htmlFor:"current-column-name",children:"Current name"}),(0,e.jsx)(O,{id:"current-column-name",value:a,readOnly:!0,disabled:!0})]}),(0,e.jsxs)("div",{className:"space-y-2",children:[(0,e.jsx)(p,{htmlFor:"new-column-name",children:"New name"}),(0,e.jsx)(O,{id:"new-column-name",value:n,onChange:r=>c(r.target.value),placeholder:"column_name",autoFocus:!0})]})]}),(0,e.jsxs)(ae,{className:"gap-2",children:[(0,e.jsx)(v,{variant:"outline",onClick:()=>u(!1),disabled:m,children:"Cancel"}),(0,e.jsx)(v,{onClick:i,disabled:l||m,children:m?"Renaming...":"Rename Column"})]})]})})},Ra=({columnName:a,isOpen:n,onOpenChange:c,cascadeDelete:t,setCascadeDelete:u,onDrop:i,isDropping:m})=>(0,e.jsx)(oe,{open:n,onOpenChange:c,children:(0,e.jsxs)(ce,{className:"max-w-md",children:[(0,e.jsxs)(de,{children:[(0,e.jsx)(he,{children:"Drop Column"}),(0,e.jsxs)(te,{children:["Are you sure you want to drop the column"," ",(0,e.jsxs)("span",{className:"font-semibold text-foreground",children:['"',a,'"']}),"? This action cannot be undone and permanently removes the data stored in it."]})]}),(0,e.jsxs)("div",{className:"flex gap-3 rounded-lg border border-zinc-800 px-3 py-3",children:[(0,e.jsx)(se,{id:`drop-column-cascade-${a}`,checked:t,onCheckedChange:l=>u(l===!0)}),(0,e.jsxs)("div",{className:"space-y-1",children:[(0,e.jsx)(p,{htmlFor:`drop-column-cascade-${a}`,className:"cursor-pointer",children:"Drop with CASCADE"}),(0,e.jsx)("p",{className:"text-xs text-muted-foreground",children:"Also remove dependent indexes, constraints, and foreign key references."})]})]}),(0,e.jsxs)(ae,{className:"gap-2",children:[(0,e.jsx)(v,{variant:"outline",onClick:()=>c(!1),disabled:m,children:"Cancel"}),(0,e.jsx)(v,{variant:"destructive",onClick:i,disabled:m,children:m?"Dropping...":"Drop Column"})]})]})}),Ea=({tableName:a,refetch:n,isRefetching:c=!1})=>{const{openSheet:t}=S();return(0,e.jsxs)("header",{className:"max-h-8 overflow-hidden border-b border-zinc-800 w-full flex items-center bg-black sticky top-0 left-0 right-0 z-0",children:[(0,e.jsx)(v,{type:"button",variant:"ghost",className:"size-8! aspect-square border-x-0 border-y-0 border-zinc-800 rounded-none",onClick:()=>{n()},"aria-label":`Refetch schema for ${a}`,disabled:c,children:(0,e.jsx)(qe,{className:"size-4"})}),(0,e.jsxs)(v,{type:"button",variant:"default",className:"h-8! border-l border-y-0 border-r-0 border-zinc-800 rounded-none flex items-center gap-2",onClick:()=>t("add-column"),children:[(0,e.jsx)(we,{className:"size-4"}),"Add Column"]})]})},Ia=({col:a})=>a.dataTypeLabel==="enum"&&a.enumValues&&a.enumValues.length>0?(0,e.jsxs)(be,{children:[(0,e.jsx)(fe,{asChild:!0,children:(0,e.jsx)(R,{variant:"outline",className:"font-mono cursor-default truncate",children:a.dataTypeLabel})}),(0,e.jsx)(ye,{side:"right",children:(0,e.jsxs)("div",{className:"text-xs space-y-0.5",children:[(0,e.jsx)("p",{className:"text-zinc-400 mb-1",children:"Enum values:"}),a.enumValues.map(n=>(0,e.jsx)("p",{className:"font-mono",children:n},n))]})})]}):(0,e.jsx)(R,{variant:"outline",className:"font-mono",children:a.dataTypeLabel}),Pa=({tableName:a})=>{const{tableCols:n,isLoadingTableCols:c,isRefetchingTableCols:t,errorTableCols:u,refetchTableCols:i}=Je({tableName:a}),m=(0,C.useMemo)(()=>[{id:"index",header:"",cell:({row:l})=>(0,e.jsx)("span",{className:"text-xs text-zinc-600",children:l.index+1}),size:47,minSize:47,enableResizing:!1},{id:"columnName",header:"Name",accessorKey:"columnName",cell:({getValue:l})=>(0,e.jsx)("span",{className:"font-mono text-zinc-100 truncate",children:l()}),minSize:100,size:200},{id:"dataTypeLabel",header:"Type",cell:({row:l})=>(0,e.jsx)(Ia,{col:l.original}),size:100,minSize:100},{id:"columnDefault",header:"Default",accessorKey:"columnDefault",cell:({getValue:l})=>{const r=l();return r?(0,e.jsx)("span",{className:"font-mono text-xs text-zinc-400 truncate",children:r}):(0,e.jsx)("span",{className:"text-zinc-600",children:"—"})},minSize:100,size:180},{id:"isNullable",header:"Nullable",accessorKey:"isNullable",cell:({getValue:l})=>l()?(0,e.jsx)("span",{className:"text-xs text-zinc-400",children:"yes"}):(0,e.jsx)("span",{className:"text-xs text-zinc-600",children:"no"}),minSize:100},{id:"key",header:"Key",cell:({row:l})=>{const{isPrimaryKey:r,isForeignKey:d}=l.original;return(0,e.jsxs)("div",{className:"flex items-center gap-1",children:[r&&(0,e.jsx)(R,{variant:"default",className:"text-[0.6rem] px-1.5",children:"PK"}),d&&(0,e.jsx)(R,{variant:"secondary",className:"text-[0.6rem] px-1.5",children:"FK"})]})},minSize:100,size:90},{id:"references",header:"References",cell:({row:l})=>{const{isForeignKey:r,referencedTable:d,referencedColumn:x}=l.original;return!r||!d||!x?(0,e.jsx)("span",{className:"text-zinc-600",children:"—"}):(0,e.jsxs)(be,{children:[(0,e.jsx)(fe,{asChild:!0,children:(0,e.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs text-zinc-400 cursor-default",children:[(0,e.jsx)(Ee,{className:"size-3 text-zinc-600"}),(0,e.jsxs)("span",{className:"font-mono",children:[d,".",x]})]})}),(0,e.jsx)(ye,{side:"left",children:(0,e.jsxs)("p",{children:["References"," ",(0,e.jsxs)("span",{className:"font-mono font-medium",children:[d,".",x]})]})})]})},size:220,minSize:100},{id:"actions",header:"",cell:({row:l})=>(0,e.jsx)("div",{className:"flex justify-center items-center",children:(0,e.jsx)(Aa,{col:l.original,tableName:a})}),size:50,enableResizing:!1}],[a]);return c?(0,e.jsx)("div",{className:"size-full flex items-center justify-center",children:(0,e.jsx)(Be,{size:"size-7"})}):u?(0,e.jsxs)("div",{className:"size-full flex flex-col items-center justify-center gap-2",children:[(0,e.jsx)("div",{className:"text-sm font-medium",children:"Failed to load schema"}),(0,e.jsx)("div",{className:"text-sm text-muted-foreground",children:u.message})]}):(0,e.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:[(0,e.jsx)(Ea,{tableName:a,refetch:i,isRefetching:t}),(0,e.jsx)(ta,{columns:m,data:n??[]}),(0,e.jsx)(ja,{tableName:a}),(0,e.jsx)(Da,{tableName:a})]})};function xs(){const{table:a}=Ge.useParams();return(0,e.jsx)("main",{className:"flex-1 flex flex-col overflow-hidden",children:(0,e.jsx)(Pa,{tableName:a})})}export{xs as component};
|