Expand description
Facility for parsing SQL schemas into a terse format that can be used for typing statements.
use sql_type::{schema::parse_schemas, TypeOptions, SQLDialect, Issues};
let schemas = "
-- Table structure for table `events`
DROP TABLE IF EXISTS `events`;
CREATE TABLE `events` (
`id` bigint(20) NOT NULL,
`user` int(11) NOT NULL,
`event_key` int(11) NOT NULL,
`time` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Table structure for table `events_keys`
DROP TABLE IF EXISTS `event_keys`;
CREATE TABLE `event_keys` (
`id` int(11) NOT NULL,
`name` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Stand-in structure for view `events_view`
-- (See below for the actual view)
DROP VIEW IF EXISTS `events_view`;
CREATE TABLE `events_view` (
`id` int(11),
`user` int(11) NOT NULL,
`event_key` text NOT NULL,
`time` datetime NOT NULL
);
-- Indexes for table `events`
ALTER TABLE `events`
ADD PRIMARY KEY (`id`),
ADD KEY `time` (`time`),
ADD KEY `event_key` (`event_key`);
-- Indexes for table `event_keys`
ALTER TABLE `event_keys`
ADD PRIMARY KEY (`id`);
-- Constraints for table `events`
ALTER TABLE `events`
ADD CONSTRAINT `event_key` FOREIGN KEY (`event_key`) REFERENCES `event_keys` (`id`);
-- Structure for view `events_view`
DROP TABLE IF EXISTS `events_view`;
DROP VIEW IF EXISTS `events_view`;
CREATE ALGORITHM=UNDEFINED DEFINER=`phpmyadmin`@`localhost`
SQL SECURITY DEFINER VIEW `events_view` AS
SELECT
`events`.`id` AS `id`,
`events`.`user` AS `user`,
`event_keys`.`name` AS `event_key`,
`events`.`time` AS `time`
FROM `events`, `event_keys`
WHERE `events`.`event_key` = `event_keys`.`id`;
";
let mut issues = Issues::new(schemas);
let schemas = parse_schemas(schemas,
&mut issues,
&TypeOptions::new().dialect(SQLDialect::MariaDB));
assert!(issues.is_ok());
for (name, schema) in schemas.schemas {
println!("{name}: {schema:?}")
}
Structs§
- Column
- A column in a schema
- Functions
- A function
- Index
Key - Procedure
- A procedure
- Schema
- Schema representing a table or view
- Schemas
- A description of tables, view, procedures and function in a schemas definition file
Functions§
- parse_
schemas - Parse a schema definition and return a terse description