Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
bec1b3b
feat(ProjectExecCSV) Implement csv reader that transforms csv file in…
Nov 15, 2025
334c0c5
feat:InmemoryProject Operator.this provide a base for easy mock testi…
Nov 15, 2025
7159b86
removed json as datasource
Nov 15, 2025
a9de3db
feature:ParquetSource operator is implemented
Nov 16, 2025
98b55f3
feat: Implement s3 file reader & file downloader
Nov 17, 2025
6ee5178
feat:Implement Project operator | tested on top source operators
Nov 17, 2025
e7e9d82
chore: add next steps. Looking at Expr and Filter operators
Nov 17, 2025
f97e73b
chore: add next steps. Looking at Expr and Filter operators
Nov 17, 2025
86b1e3c
fix:revised PR
Nov 17, 2025
667294a
Merge pull request #9 from Rich-T-kid/feature/Project-Leaf-operator
Rich-T-kid Nov 17, 2025
ee7d4a2
define Expr Interface & Expr Operators
Nov 18, 2025
0ee601a
feat:defined and intergrated Expression interface to query execution …
Nov 19, 2025
19d436c
fixed linting/pre-push rules
Nov 19, 2025
3f6de41
resolved PR comments
Nov 19, 2025
fea2b2d
Merge pull request #11 from Rich-T-kid/feature/Expresion-Operator
Rich-T-kid Nov 19, 2025
3662245
feat(http-server) Added http server, tests, updated readme, added wor…
MarcoFerreiraPerson Nov 20, 2025
2ff516e
docs(Contributing) added frontend test information to Contributing.md
MarcoFerreiraPerson Nov 20, 2025
a32b366
docs(Contributing) added example information to Contributing.md
MarcoFerreiraPerson Nov 20, 2025
4b7365c
Merge pull request #18 from Rich-T-kid/feature/http-web-server
MarcoFerreiraPerson Nov 20, 2025
0d2369c
feat:Implement limitExec operator & include test
Nov 20, 2025
0f8a49f
feat: Implement filter operator with support for expressions
Nov 20, 2025
1907dd3
feat:Implement support for Sql-compatible regEx
Nov 21, 2025
4e2eeb7
Merge pull request #19 from Rich-T-kid/feature/Limit-Filter-WC-Operat…
Rich-T-kid Nov 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Server Configuration
PORT=8000
HOST=0.0.0.0

# Logging Configuration
# Options: prod, info, debug
LOGGING_MODE=info

# Testing Configuration
TEST_SERVER_URL=http://localhost:8000
10 changes: 10 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Server Configuration
PORT=8000
HOST=0.0.0.0

# Logging Configuration
# Options: prod, info, debug
LOGGING_MODE=info

# Testing Configuration
TEST_SERVER_URL=http://localhost:8000
35 changes: 35 additions & 0 deletions .github/workflows/frontend-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Frontend Tests

on:
push:
branches: [ main, pre-release ]
paths:
- 'src/FrontEnd/**'
- '.github/workflows/frontend-test.yml'
pull_request:
branches: [ main, pre-release ]
paths:
- 'src/FrontEnd/**'
- '.github/workflows/frontend-test.yml'

jobs:
test:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r src/FrontEnd/requirements.txt

- name: Run tests
run: |
cd src/FrontEnd
pytest -v -m "not integration"
9 changes: 8 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,11 @@ src/Backend/test_data/json

# Allow s3_source directory
!src/Backend/test_data/s3_source/
!src/Backend/test_data/s3_source/**
!src/Backend/test_data/s3_source/**

# Allow a specific CSV dataset that we want tracked despite the general csv ignores
!src/Backend/test_data/csv/
!src/Backend/test_data/csv/Mental_Health_and_Social_Media_Balance_Dataset.csv
# allow parquet file
!src/Backend/test_data/parquet/
!src/Backend/test_data/parquet/capitals_clean.parquet
20 changes: 19 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,26 @@ We use a Makefile to simplify common development tasks. All commands should be r
```bash
make go-test-coverage
```
- Run test with html coverage
```bash
go test -count=1 ./... -coverprofile=coverage.out
go tool cover -html=coverage.out
```


### Rust Tests
- Run all tests
```bash
make rust-test
```

### Run All Tests (Go + Rust)
### Frontend Tests
- Run all tests
```bash
make frontend-test
```

### Run All Tests (Go + Rust + Frontend)
- Run tests for both backends
```bash
make test-all
Expand Down Expand Up @@ -110,6 +122,11 @@ make go-run
make rust-run
```

### Build and Run Frontend
```bash
make frontend-run
```

### Run All Tests
```bash
make test-all
Expand All @@ -119,6 +136,7 @@ Or run individually:
```bash
make go-test
make rust-test
make frontend-test
```

### Run Linters
Expand Down
52 changes: 48 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.PHONY: help go-test rust-test go-run rust-run go-lint rust-lint go-fmt rust-fmt test-all lint-all fmt-all pre-push
.PHONY: help go-test rust-test go-run rust-run go-lint rust-lint go-fmt rust-fmt frontend-test frontend-run frontend-docker-build frontend-docker-run frontend-docker-down frontend-setup test-all lint-all fmt-all pre-push

# Default target
help:
Expand All @@ -11,7 +11,13 @@ help:
@echo " make rust-lint - Run Rust linter and formatter check"
@echo " make go-fmt - Format Go code"
@echo " make rust-fmt - Format Rust code"
@echo " make test-all - Run all tests (Go + Rust)"
@echo " make frontend-test - Run Python/Frontend tests"
@echo " make frontend-run - Run Frontend server (without Docker)"
@echo " make frontend-setup - Setup Python virtual environment and install dependencies"
@echo " make frontend-docker-build - Build Frontend Docker image"
@echo " make frontend-docker-run - Run Frontend using Docker Compose"
@echo " make frontend-docker-down - Stop Frontend Docker containers"
@echo " make test-all - Run all tests (Go + Rust + Frontend)"
@echo " make lint-all - Run all linters (Go + Rust)"
@echo " make fmt-all - Format all code (Go + Rust)"
@echo " make pre-push - Run fmt, lint, and test (use before pushing)"
Expand All @@ -29,7 +35,6 @@ go-test-coverage:
@echo "Running Go tests with coverage..."
cd src/Backend/opti-sql-go && go test -v -coverprofile=coverage.out ./...
cd src/Backend/opti-sql-go && go tool cover -func=coverage.out

go-run:
@echo "Running Go application..."
cd src/Backend/opti-sql-go && go run main.go
Expand Down Expand Up @@ -71,8 +76,47 @@ rust-fmt-check:
@echo "Checking Rust formatting..."
cd src/Backend/opti-sql-rs && cargo fmt --check

# Frontend targets
frontend-setup:
@echo "Setting up Python virtual environment..."
rm -rf src/FrontEnd/venv
cd src/FrontEnd && python3.12 -m venv --without-pip venv
@echo "Installing pip..."
cd src/FrontEnd && . venv/bin/activate && curl -sS https://bootstrap.pypa.io/get-pip.py | python
@echo "Installing dependencies..."
cd src/FrontEnd && . venv/bin/activate && pip install --upgrade pip && pip install -r requirements.txt
@echo "Frontend setup completed! Activate with: cd src/FrontEnd && source venv/bin/activate"

frontend-test: frontend-setup
@echo "Running Frontend/Python tests..."
cd src/FrontEnd && . venv/bin/activate && pytest -m "not integration"

frontend-run:
@echo "Running Frontend server..."
cd src/FrontEnd && . venv/bin/activate && python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8005

frontend-docker-build:
@echo "Building Frontend Docker image..."
@if [ ! -f src/FrontEnd/.env ]; then \
echo "Creating .env file from root .env..."; \
cp .env src/FrontEnd/.env; \
fi
cd src/FrontEnd && docker compose build

frontend-docker-run:
@echo "Running Frontend with Docker Compose..."
@if [ ! -f src/FrontEnd/.env ]; then \
echo "Creating .env file from root .env..."; \
cp .env src/FrontEnd/.env; \
fi
cd src/FrontEnd && docker compose up -d

frontend-docker-down:
@echo "Stopping Frontend Docker containers..."
cd src/FrontEnd && docker compose down

# Combined targets
test-all: go-test rust-test
test-all: go-test rust-test frontend-test
@echo "All tests completed!"

lint-all: go-lint rust-lint
Expand Down
16 changes: 15 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ A high-performance, in-memory query execution engine.

![Go Tests](https://github.com/Rich-T-kid/OptiSQL/actions/workflows/go-test.yml/badge.svg)
![Rust Tests](https://github.com/Rich-T-kid/OptiSQL/actions/workflows/rust-test.yml/badge.svg)
![Frontend Tests](https://github.com/Rich-T-kid/OptiSQL/actions/workflows/frontend-test.yml/badge.svg)


## Overview

Expand All @@ -20,6 +22,8 @@ OptiSQL is a custom in-memory query execution engine. The backend (physical exec
- Go 1.24+
- Rust 1.70+
- C++23
- Python 3.11+
- Docker 29+
- Make
- git

Expand All @@ -36,6 +40,13 @@ make go-run
# Build and run Rust backend
make rust-run

# Frontend setup and run
make frontend-setup # Create venv and install dependencies
make frontend-run # Run locally without Docker
# OR with Docker
make frontend-docker-build
make frontend-docker-run

# Run all tests
make test-all

Expand All @@ -58,7 +69,10 @@ OptiSQL/
│ │ └── opti-sql-rs/ # Rust implementation (Go clone for learning)
│ │ ├── src/project/ # Core project logic
│ │ └── src/ # Query processing modules
│ └── FrontEnd/ # C++ frontend (in development)
│ └── FrontEnd/ # Python/FastAPI HTTP server (C++ query processing in progress)
│ ├── app/ # API endpoints and logic
│ ├── tests/ # Frontend tests
│ └── Dockerfile # Docker configuration
├── .github/workflows/ # CI/CD pipelines
├── Makefile # Development commands
└── CONTRIBUTING.md # Contribution guidelines
Expand Down
Loading
Loading