sqlite-plugin 0.9.0

A Rust crate for building a custom SQLite virtual file system (VFS).
Documentation
# Start from the official Rust image
FROM rust:1.85

# Install essential build tools, clang/llvm, and SQLite dependencies
RUN apt-get update && \
    apt-get install -y \
    clang libclang-dev llvm \
    wget unzip build-essential tcl-dev zlib1g-dev && \
    rm -rf /var/lib/apt/lists/*

# Define SQLite version to install (3.45.3 as an example, which is > 3.44.0)
# You can update these ARGs if a newer SQLite version is needed/preferred
ARG SQLITE_YEAR=2025
ARG SQLITE_FILENAME_VERSION=3490200
ARG SQLITE_TARBALL_FILENAME=sqlite-autoconf-${SQLITE_FILENAME_VERSION}.tar.gz

# Download, compile, and install SQLite from source
RUN cd /tmp && \
    wget "https://www.sqlite.org/${SQLITE_YEAR}/${SQLITE_TARBALL_FILENAME}" && \
    tar xvfz "${SQLITE_TARBALL_FILENAME}" && \
    cd "sqlite-autoconf-${SQLITE_FILENAME_VERSION}" && \
    ./configure --prefix=/usr/local \
                CFLAGS="-DSQLITE_ENABLE_COLUMN_METADATA=1 \
                        -DSQLITE_ENABLE_LOAD_EXTENSION=1 \
                        -DSQLITE_ENABLE_FTS5=1 \
                        -DSQLITE_ENABLE_DBSTAT_VTAB=1 \
                        -DSQLITE_ENABLE_NULL_TRIM=1 \
                        -DSQLITE_ENABLE_RTREE=1" && \
    make -j$(nproc) && \
    make install && \
    # Update the linker cache to recognize the new SQLite library
    ldconfig && \
    rm -rf /tmp/*

# Set the working directory in the container
WORKDIR /code

COPY . .

RUN cargo build --example memvfs --features dynamic

CMD ["/bin/bash", "-c", "cat examples/test_memvfs.sql | sqlite3"]