sqlite_parser

Crates.iosqlite_parser
lib.rssqlite_parser
version0.1.20
sourcesrc
created_at2021-01-20 10:15:45.745732
updated_at2023-12-28 03:03:40.85942
descriptionParse SQLite databases
homepage
repositoryhttps://github.com/Jasperav/SQLiteParser
max_upload_size
id344341
size30,257
(Jasperav)

documentation

README

SQLite parser

Latest Version Build Status

Usage

This crate will make it easy to parse a SQLite database. This can be useful for code generation.

Add a dependency on this crate by adding this line under [dependencies] in your Cargo.toml file:

sqlite_parser = "*"

Than implement the Parser trait and call the parse function with the implementing struct and the location of the SQLite file. There is a convenience method that doesn't require an implementing Parser trait called parse_no_parser.

Calling the parser

There are 2 ways of using this library

  • Implement the Parser trait and call the parse function.
use sqlite_parser::{parse, Parser, Table, Metadata};

/// Create a parse struct to process the tables
/// Note: there is a convenience method `parse_no_parser` that doesn't require a parser.

struct Parse;
impl Parser for Parse {
    fn process_tables(&mut self, meta_data: Metadata) {
        // Do something with the tables
    }
}

/// Start the parsing
parse(&my_sqlite_file_location, &mut Parse { });
  • Don't implement the Parser trait and call the parse_no_parser function.
use sqlite_parser::parse_no_parser;

/// Start the parsing
let _tables = parse_no_parser(&my_sqlite_file_location);
/// Do stuff with the tables property!

What will it parse?

  • Tables -> represents a table in SQLite
    • Table_name -> the table name
    • [Columns] -> the columns of the table
      • Id -> the id of the column (starts with 0 and is incremented for each ever-created column)
      • Name -> the name of the column
      • Type of the column (Text, Numeric, Blob, Real, Integer)
      • Nullable -> checks if the column is nullable
      • Part of the primary key -> checks if this column is part of the primary key
    • [Foreign keys] -> the foreign keys of the table
      • Id -> the id of the foreign key
      • Table -> the table it refers to
      • [From_column] -> the columns it refers from (own table)
      • [To_column] -> the columns it refers to (referring to table)
Commit count: 34

cargo fmt