First working query of store_uuid
This commit is contained in:
parent
dc2edcf0a3
commit
afb2fae01b
43
Cargo.lock
generated
43
Cargo.lock
generated
@ -28,6 +28,12 @@ version = "1.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.73"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
@ -133,6 +139,7 @@ dependencies = [
|
||||
"clap",
|
||||
"env_logger",
|
||||
"log",
|
||||
"sqlite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -147,6 +154,12 @@ version = "6.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff"
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
version = "0.3.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro-error"
|
||||
version = "1.0.4"
|
||||
@ -206,6 +219,36 @@ version = "0.6.27"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
|
||||
|
||||
[[package]]
|
||||
name = "sqlite"
|
||||
version = "0.27.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e2df8edd55685048550daaaf2be9024182f3523086cc86f7d50c136e55173e8c"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"sqlite3-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlite3-src"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d1815a7a02c996eb8e5c64f61fcb6fd9b12e593ce265c512c5853b2513635691"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"pkg-config",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlite3-sys"
|
||||
version = "0.14.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d47c99824fc55360ba00caf28de0b8a0458369b832e016a64c13af0ad9fbb9ee"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"sqlite3-src",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "strsim"
|
||||
version = "0.10.0"
|
||||
|
||||
@ -21,3 +21,4 @@ path = "src/cli/main.rs"
|
||||
clap = { version = "4.0.14", features = ["derive"] }
|
||||
env_logger = "0.9.1"
|
||||
log = "0.4.17"
|
||||
sqlite = "0.27.0"
|
||||
|
||||
47
flake.lock
generated
47
flake.lock
generated
@ -1,45 +1,28 @@
|
||||
{
|
||||
"nodes": {
|
||||
"naersk": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"crate2nix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1662220400,
|
||||
"narHash": "sha256-9o2OGQqu4xyLZP9K6kNe1pTHnyPz0Wr3raGYnr9AIgY=",
|
||||
"owner": "nix-community",
|
||||
"repo": "naersk",
|
||||
"rev": "6944160c19cb591eb85bbf9b2f2768a935623ed3",
|
||||
"lastModified": 1665362239,
|
||||
"narHash": "sha256-vNMu88WotPaOfuzubfOsLcaHB9WwDfV5/drEzY8tpFo=",
|
||||
"owner": "kolloch",
|
||||
"repo": "crate2nix",
|
||||
"rev": "cdcdd4950cc6ef1133b5f866a7c20dc06c130a84",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "master",
|
||||
"repo": "naersk",
|
||||
"owner": "kolloch",
|
||||
"repo": "crate2nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1664266718,
|
||||
"narHash": "sha256-j2okM1ghRbJY1Akxpu/pkuxIvT9FSycLwUxAYUOr6PI=",
|
||||
"owner": "NixOS",
|
||||
"lastModified": 1653936696,
|
||||
"narHash": "sha256-M6bJShji9AIDZ7Kh7CPwPBPb/T7RiVev2PAcOi4fxDQ=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "2e977bf954e84a981b15ff4d2442802ce9b675f9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1665634984,
|
||||
"narHash": "sha256-zwXeMc96BD9iFxSB/SLr3dI8iYpqM+seX9qy6bGV+cw=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "cfea568da97a2668ef3cb3fc42eaacfb0e706807",
|
||||
"rev": "ce6aa13369b667ac2542593170993504932eb836",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -51,8 +34,8 @@
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"naersk": "naersk",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"crate2nix": "crate2nix",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"utils": "utils"
|
||||
}
|
||||
},
|
||||
|
||||
30
flake.nix
30
flake.nix
@ -1,21 +1,39 @@
|
||||
{
|
||||
inputs = {
|
||||
naersk.url = "github:nix-community/naersk/master";
|
||||
#naersk.url = "github:nix-community/naersk/master";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
utils.url = "github:numtide/flake-utils";
|
||||
crate2nix = {
|
||||
url = "github:kolloch/crate2nix";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, utils, naersk }:
|
||||
outputs = { self, nixpkgs, utils, crate2nix }:
|
||||
utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
crateName = "nancy";
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
naersk-lib = pkgs.callPackage naersk { };
|
||||
inherit (import "${crate2nix}/tools.nix" { inherit pkgs; })
|
||||
generatedCargoNix;
|
||||
#naersk-lib = pkgs.callPackage naersk { };
|
||||
project = import (generatedCargoNix {
|
||||
name = crateName;
|
||||
src = ./.;
|
||||
}) {
|
||||
inherit pkgs;
|
||||
defaultCrateOverrides = pkgs.defaultCrateOverrides // {
|
||||
# Crate dependency overrides go here
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
defaultPackage = naersk-lib.buildPackage ./.;
|
||||
packages.${crateName} = project.rootCrate.build;
|
||||
defaultPackage = self.packages.${system}.${crateName};
|
||||
#defaultPackage = naersk-lib.buildPackage ./.;
|
||||
devShell = with pkgs; mkShell {
|
||||
buildInputs = [ cargo rustc rustfmt pre-commit rustPackages.clippy ];
|
||||
RUST_SRC_PATH = rustPlatform.rustLibSrc;
|
||||
inputsFrom = builtins.attrValues self.packages.${system};
|
||||
buildInputs = [ cargo rust-analyzer clippy rustfmt ];
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
@ -13,11 +13,9 @@ struct Cli {
|
||||
#[derive(Subcommand)]
|
||||
enum Commands {
|
||||
/// Record changes to a store directory (or a new store)
|
||||
Record {
|
||||
},
|
||||
Record {},
|
||||
/// Check for changes in store and print basic statistics
|
||||
Status {
|
||||
},
|
||||
Status {},
|
||||
/// Just say hello
|
||||
Hello {
|
||||
#[arg(short, long)]
|
||||
@ -36,10 +34,10 @@ fn main() {
|
||||
nancy::say_hello();
|
||||
}
|
||||
}
|
||||
Some(Commands::Record { }) => {
|
||||
Some(Commands::Record {}) => {
|
||||
println!("Record not yet implemented");
|
||||
}
|
||||
Some(Commands::Status { }) => {
|
||||
Some(Commands::Status {}) => {
|
||||
println!("Status not yet implemented");
|
||||
}
|
||||
None => {}
|
||||
|
||||
@ -1,9 +1,47 @@
|
||||
use log;
|
||||
use sqlite;
|
||||
|
||||
mod store;
|
||||
pub struct Store<'a> {
|
||||
conn: &'a sqlite::Connection,
|
||||
uuid: &'a str,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum DBError {
|
||||
NoRowsReturned,
|
||||
NoneValue,
|
||||
}
|
||||
|
||||
pub fn get_uuid(conn: &sqlite::Connection) -> Result<String, DBError> {
|
||||
let mut uuid = Err(DBError::NoRowsReturned);
|
||||
conn.iterate(
|
||||
"
|
||||
SELECT value FROM local_metadata WHERE key = 'store_uuid';
|
||||
",
|
||||
|pairs| {
|
||||
uuid = match (*pairs)[0].1 {
|
||||
Some(u) => Ok(u.to_string()),
|
||||
None => Err(DBError::NoneValue),
|
||||
};
|
||||
|
||||
false // only process the first row
|
||||
},
|
||||
);
|
||||
uuid
|
||||
}
|
||||
|
||||
pub fn say_hello() {
|
||||
log::trace!("enter say_hello()");
|
||||
println!("If you see nothing in the next line, set RUST_LOG to info or lower");
|
||||
log::info!("Hello from libnancy.rlib!!!");
|
||||
|
||||
let store_path = "nancy.db";
|
||||
let conn = sqlite::open(store_path).unwrap();
|
||||
let uuid = get_uuid(&conn).unwrap();
|
||||
let this_store = Store {
|
||||
conn: &conn,
|
||||
uuid: &uuid,
|
||||
};
|
||||
|
||||
println!("Store UUID: {}", this_store.uuid);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user