diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 3d45825..e8c2a09 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -32,12 +32,17 @@ jobs: run: cargo check -p mem-ingest 2>&1 | tail -20 || true - name: Get short SHA - if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' id: sha run: echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + - name: Build Docker image + run: | + docker build --no-cache --progress=plain \ + -t "${IMAGE}:${{ steps.sha.outputs.short_sha }}" \ + -t "${IMAGE}:latest" \ + -f Dockerfile . + - name: Registry login - if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' run: | echo "${REGISTRY_TOKEN}" | docker login "${REGISTRY}" \ --username "${REGISTRY_USER}" --password-stdin @@ -45,21 +50,11 @@ jobs: REGISTRY_USER: ${{ secrets.FORGEJO_REGISTRY_USER }} REGISTRY_TOKEN: ${{ secrets.FORGEJO_REGISTRY_TOKEN }} - - name: Build Docker image - if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' - run: | - docker build --no-cache \ - -t "${IMAGE}:${{ steps.sha.outputs.short_sha }}" \ - -t "${IMAGE}:latest" \ - -f Dockerfile . - - name: Push Docker image - if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' run: | docker push "${IMAGE}:${{ steps.sha.outputs.short_sha }}" docker push "${IMAGE}:latest" echo "✓ Pushed: ${IMAGE}:${{ steps.sha.outputs.short_sha }}" - name: Prune unused images - if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' run: docker image prune -a --force 2>&1 | tail -3 || true diff --git a/Dockerfile b/Dockerfile index eb5ec97..04f6c0f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,16 @@ # Multi-stage build for Poimen Memory Service (Rust) # Stage 1: Builder -FROM rust:1.81-bookworm as builder +FROM rust:1-bookworm as builder WORKDIR /build # Copy source COPY . . -# Build in release mode -RUN cargo build --release +# Build the mem binary (offline mode - no DATABASE_URL needed) +ENV SQLX_OFFLINE=true +RUN cargo build --release -p mem-cli # Stage 2: Runtime FROM debian:bookworm-slim diff --git a/crates/mem-store/src/versioning.rs b/crates/mem-store/src/versioning.rs index e463240..0c6c723 100644 --- a/crates/mem-store/src/versioning.rs +++ b/crates/mem-store/src/versioning.rs @@ -111,28 +111,28 @@ impl EntityVersioningService { let mut modified = Vec::new(); // Check removed and modified - if let Some(from) = from_obj { + if let Some(ref from) = from_obj { for (key, from_val) in from { if let Some(to) = &to_obj { - if let Some(to_val) = to.get(&key) { - if from_val != *to_val { + if let Some(to_val) = to.get(key) { + if from_val != to_val { modified.push(DiffField { - name: key, - from_value: Some(from_val), + name: key.clone(), + from_value: Some(from_val.clone()), to_value: Some(to_val.clone()), }); } } else { removed.push(DiffField { - name: key, - from_value: Some(from_val), + name: key.clone(), + from_value: Some(from_val.clone()), to_value: None, }); } } else { removed.push(DiffField { - name: key, - from_value: Some(from_val), + name: key.clone(), + from_value: Some(from_val.clone()), to_value: None, }); } @@ -301,28 +301,28 @@ fn compute_diff( let mut removed = Vec::new(); let mut modified = Vec::new(); - if let Some(from) = from_obj { + if let Some(ref from) = from_obj { for (key, from_val) in from { if let Some(to) = &to_obj { - if let Some(to_val) = to.get(&key) { - if from_val != *to_val { + if let Some(to_val) = to.get(key) { + if from_val != to_val { modified.push(DiffField { - name: key, - from_value: Some(from_val), + name: key.clone(), + from_value: Some(from_val.clone()), to_value: Some(to_val.clone()), }); } } else { removed.push(DiffField { - name: key, - from_value: Some(from_val), + name: key.clone(), + from_value: Some(from_val.clone()), to_value: None, }); } } else { removed.push(DiffField { - name: key, - from_value: Some(from_val), + name: key.clone(), + from_value: Some(from_val.clone()), to_value: None, }); }