branch: externals/vecdb
commit 5430f014076d305120e8cd0eca64d6ce8d19e167
Merge: e89d5a9a3a 4cc8a17431
Author: Andrew Hyatt <ahy...@gmail.com>
Commit: GitHub <nore...@github.com>

    Add Continuous Integration, setting up postgres, chroma, and qdrant (#3)
---
 .github/workflows/ci.yaml | 87 +++++++++++++++++++++++++++++++++++++++++++++++
 vecdb-psql.el             |  2 ++
 vecdb.el                  |  2 +-
 3 files changed, 90 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
new file mode 100644
index 0000000000..6550501458
--- /dev/null
+++ b/.github/workflows/ci.yaml
@@ -0,0 +1,87 @@
+name: CI
+
+on:
+  # Triggers the workflow on push or pull request events but only for the 
"main" branch
+  push:
+    branches: [ "main" ]
+  pull_request:
+    branches: [ "*" ]
+
+jobs:
+  simple-tests:
+    runs-on: ubuntu-latest
+    environment: Continuous Integration
+    strategy:
+      matrix:
+        emacs_version:
+          - 29.1
+          - 29.4
+    steps:
+    - name: Set up Emacs
+      uses: jcs090218/setup-emacs@master
+      with:
+        version: ${{matrix.emacs_version}}
+
+    - name: Install Eldev
+      uses: emacs-eldev/setup-eldev@v1
+
+    - name: Check out the source code
+      uses: actions/checkout@v4
+
+    - name: Byte-compile the project
+      run: |
+        eldev -dtT compile --warnings-as-errors
+
+    - name: Lint the project
+      run: |
+        eldev -p -dtT lint
+
+    - name: Test the project
+      # We don't set up the env variables so no integration tests will be run
+      run: |
+        eldev -p -dtT test
+  integration-tests:
+    runs-on: ubuntu-latest
+    environment: Continuous Integration
+    services:
+      postgres:
+        image: pgvector/pgvector:pg16
+        env:
+          POSTGRES_USER: postgres
+          POSTGRES_HOST_AUTH_METHOD: trust
+        ports:
+          - 5432:5432
+      chromadb:
+        image: chromadb/chroma
+        ports:
+          - 8000:8000
+      qdrant:
+        image: qdrant/qdrant
+        ports:
+          - 6333:6333
+    steps:
+    - name: Set up Emacs
+      uses: jcs090218/setup-emacs@master
+      with:
+        version: 29.4
+
+    - name: Install Eldev
+      uses: emacs-eldev/setup-eldev@v1
+
+    - name: Check out the source code
+      uses: actions/checkout@v4
+
+    - name: Postgres setup
+      # Create the "test" database
+      run: |
+        psql -h localhost -U postgres -c "CREATE DATABASE test;"
+
+    - name: Test the project
+      env:
+        CHROMA_URL: http://localhost:8000
+        QDRANT_URL: http://localhost:6333
+        QDRANT_API_KEY: ""
+        PSQL_DB: test
+        PSQL_USERNAME: postgres
+      run: |
+        eldev -p -dtT test
diff --git a/vecdb-psql.el b/vecdb-psql.el
index 40dc662180..534894902c 100644
--- a/vecdb-psql.el
+++ b/vecdb-psql.el
@@ -78,6 +78,8 @@ DBNAME is the database name, which must have been created by 
the user."
 (cl-defmethod vecdb-create ((provider vecdb-psql-provider)
                             (collection vecdb-collection))
   "Create COLLECTION in database PROVIDER."
+  (pg-exec (vecdb-psql-get-connection provider)
+           (format "CREATE EXTENSION IF NOT EXISTS vector;"))
   (pg-exec (vecdb-psql-get-connection provider)
            (format "CREATE TABLE IF NOT EXISTS %s (
                      id INTEGER PRIMARY KEY,
diff --git a/vecdb.el b/vecdb.el
index a0bb0fae5f..945c406b90 100644
--- a/vecdb.el
+++ b/vecdb.el
@@ -76,7 +76,7 @@ An ID may be an integer or a string, and is used to uniquely 
identify the item."
 
 (cl-defgeneric vecdb-get-item (provider collection id)
   "Get items with ID from the COLLECTION with PROVIDER.
-If the item does not exist, return `nil'."
+If the item does not exist, return nil."
   (ignore collection id)
   (signal 'not-implemented
           (list "vecdb-get not implemented for" (vecdb-provider-name 
provider))))

Reply via email to