All files / src/components/Integration/connectors/assets PostgresAssets.tsx

0% Statements 0/10
0% Branches 0/3
0% Functions 0/5
0% Lines 0/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125                                                                                                                                                                                                                                                         
import {
  Accordion,
  AccordionDetails,
  AccordionSummary,
  Table,
  TableBody,
  TableCell,
  TableContainer,
  TableHead,
  TableRow,
  Typography,
} from "@mui/material";
import { KeyboardArrowDownRounded } from "@mui/icons-material";
 
const TableComponent = ({ tables }) => {
  return (
    <div className="flex flex-col gap-2">
      {tables?.map((table, index) => (
        <Accordion
          key={index}
          className="!rounded !shadow-none !border before:!content-none overflow-hidden aria-expanded:!m-0">
          <AccordionSummary
            expandIcon={<KeyboardArrowDownRounded />}
            className="!bg-gray-100 !shadow-none !border-none hover:!bg-gray-50 !transition-all">
            <Typography>
              <p style={{ fontSize: "16px" }}>{table.name}</p>{" "}
              <i style={{ fontSize: "14px" }}>(Click for details)</i>{" "}
            </Typography>
          </AccordionSummary>
          <AccordionDetails>
            <TableContainer>
              <Table>
                <TableHead>
                  <TableRow>
                    <TableCell style={{ maxWidth: "20px" }}>
                      Column name
                    </TableCell>
                    <TableCell style={{ maxWidth: "20px" }}>
                      Column type
                    </TableCell>
                  </TableRow>
                </TableHead>
                <TableBody>
                  {table.columns.map((col, index) => (
                    <TableRow style={{ fontSize: "10px" }}>
                      <TableCell style={{ maxWidth: "20px" }}>
                        <Typography>
                          <p style={{ fontSize: "16px" }}>{col.column_name}</p>{" "}
                        </Typography>
                      </TableCell>
                      <TableCell style={{ maxWidth: "20px" }}>
                        <Typography>
                          <p style={{ fontSize: "16px" }}>{col.data_type}</p>{" "}
                        </Typography>
                      </TableCell>
                    </TableRow>
                  ))}
                </TableBody>
              </Table>
            </TableContainer>
          </AccordionDetails>
        </Accordion>
      ))}
    </div>
  );
};
 
export const PostgresAssets = ({ assets }) => {
  return (
    <div className="flex flex-col gap-2">
      {assets && assets.length > 0 && (
        <Accordion className="!rounded !shadow-none !border before:!content-none overflow-hidden aria-expanded:!m-0">
          <AccordionSummary
            expandIcon={<KeyboardArrowDownRounded />}
            className="!bg-gray-100 !shadow-none !border-none hover:!bg-gray-50 !transition-all">
            <Typography>
              <p style={{ fontSize: "16px" }}>Databases ({assets.length})</p>{" "}
            </Typography>
          </AccordionSummary>
 
          <AccordionDetails>
            <Table stickyHeader>
              <TableBody>
                {assets?.map((item, index) => (
                  <TableRow
                    key={index}
                    sx={{
                      "&:last-child td, &:last-child th": { border: 0 },
                    }}>
                    <TableCell component="th" scope="row">
                      <Accordion
                        style={{ borderRadius: "5px", marginTop: "10px" }}
                        className="collapsible_option">
                        <AccordionSummary
                          expandIcon={<KeyboardArrowDownRounded />}
                          className="!bg-gray-100 !shadow-none !border-none hover:!bg-gray-50 !transition-all">
                          <Typography>
                            <b style={{ fontSize: "16px" }}>
                              {item.postgres_database?.database}
                            </b>
                            &nbsp;&nbsp;
                            <i style={{ fontSize: "14px" }}>
                              (Click for details)
                            </i>{" "}
                          </Typography>
                        </AccordionSummary>
 
                        <AccordionDetails>
                          <TableComponent
                            tables={item?.postgres_database?.tables}
                          />
                        </AccordionDetails>
                      </Accordion>
                    </TableCell>
                  </TableRow>
                ))}
              </TableBody>
            </Table>
          </AccordionDetails>
        </Accordion>
      )}
    </div>
  );
};