Skip to content

Commit

Permalink
feat(service/libsql): support libsql (apache#3233)
Browse files Browse the repository at this point in the history
* feat(service/libsql): support libsql

* ci(service/libsql): add ci action

* feat(service/libsql): replace libsql-client with basic http request

* ci(service/libsql): add test of auth

* doc(service/libsql): update
  • Loading branch information
G-XD authored Oct 11, 2023
1 parent bb1780b commit cf17729
Show file tree
Hide file tree
Showing 13 changed files with 794 additions and 42 deletions.
8 changes: 8 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,14 @@ OPENDAL_GDRIVE_ACCESS_TOKEN=<access_token>
OPENDAL_GDRIVE_REFRESH_TOKEN=<refresh_token>
OPENDAL_GDRIVE_CLIENT_ID=<client_id>
OPENDAL_GDRIVE_CLIENT_SECRET=<client_secret>
# libsql
OPENDAL_LIBSQL_TEST=false
OPENDAL_LIBSQL_ROOT=/tmp/opendal/
OPENDAL_LIBSQL_CONNECTION_STRING=https://example.com/db
OPENDAL_LIBSQL_AUTH_TOKEN=<secret>
OPENDAL_LIBSQL_TABLE=t_opendal
OPENDAL_LIBSQL_KEY_FIELD=key
OPENDAL_LIBSQL_VALUE_FIELD=val
# sqlite
OPENDAL_SQLITE_TEST=on
OPENDAL_SQLITE_CONNECTION_STRING=file:///tmp/opendal/test.db
Expand Down
132 changes: 132 additions & 0 deletions .github/workflows/service_test_libsql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

name: Service Test Libsql

on:
push:
branches:
- main
pull_request:
branches:
- main
paths:
- "core/src/**"
- "core/tests/**"
- "!core/src/docs/**"
- "!core/src/services/**"
- "core/src/services/libsql/**"
- ".github/workflows/service_test_libsql.yml"

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
cancel-in-progress: true

jobs:
libsql:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Setup libsql Server
shell: bash
working-directory: fixtures/libsql
run: docker-compose -f docker-compose.yml up -d

- name: Setup Rust toolchain
uses: ./.github/actions/setup
with:
need-nextest: true

- name: Create table
shell: bash
working-directory: core
run: |
curl --location '127.0.0.1:8080/v2/pipeline' \
--header 'Content-Type: application/json' \
--data '{
"baton": null,
"requests": [
{
"type": "execute",
"stmt": {
"sql": "CREATE TABLE IF NOT EXISTS `data` (`key` TEXT PRIMARY KEY NOT NULL CHECK(length(key) <= 255),`data` BLOB);",
"args": [],
"want_rows": true
}
}
]
}'
- name: Test
shell: bash
working-directory: core
run: cargo nextest run libsql --features services-libsql
env:
OPENDAL_LIBSQL_TEST: on
OPENDAL_LIBSQL_CONNECTION_STRING: http://127.0.0.1:8080
OPENDAL_LIBSQL_TABLE: data
OPENDAL_LIBSQL_KEY_FIELD: key
OPENDAL_LIBSQL_VALUE_FIELD: data

libsql-auth:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Setup libsql-auth Server
shell: bash
working-directory: fixtures/libsql
run: docker-compose -f docker-compose-auth.yml up -d

- name: Setup Rust toolchain
uses: ./.github/actions/setup
with:
need-nextest: true

- name: Create table
shell: bash
working-directory: core
run: |
curl --location '127.0.0.1:8080/v2/pipeline' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJleHAiOjc5ODg0ODM4Mjd9.MatB2aLnPFusagqH2RMoVExP37o2GFLmaJbmd52OdLtAehRNeqeJZPrefP1t2GBFidApUTLlaBRL6poKq_s3CQ' \
--data '{
"baton": null,
"requests": [
{
"type": "execute",
"stmt": {
"sql": "CREATE TABLE IF NOT EXISTS `data` (`key` TEXT PRIMARY KEY NOT NULL CHECK(length(key) <= 255),`data` BLOB);",
"args": [],
"want_rows": true
}
}
]
}'
- name: Test
shell: bash
working-directory: core
run: cargo nextest run libsql --features services-libsql
env:
OPENDAL_LIBSQL_TEST: on
OPENDAL_LIBSQL_CONNECTION_STRING: http://127.0.0.1:8080
OPENDAL_LIBSQL_AUTH_TOKEN: eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJleHAiOjc5ODg0ODM4Mjd9.MatB2aLnPFusagqH2RMoVExP37o2GFLmaJbmd52OdLtAehRNeqeJZPrefP1t2GBFidApUTLlaBRL6poKq_s3CQ
OPENDAL_LIBSQL_TABLE: data
OPENDAL_LIBSQL_KEY_FIELD: key
OPENDAL_LIBSQL_VALUE_FIELD: data
Loading

0 comments on commit cf17729

Please sign in to comment.