Add initial SQLmem package structure with SQL parser, cache manager, column registry, and tests
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import pytest
|
||||
|
||||
from sqlmem.exceptions import ReadOnlyError, UnsupportedQueryError
|
||||
from sqlmem.parser import parse
|
||||
|
||||
|
||||
def test_simple_select():
|
||||
result = parse("SELECT name, email FROM users WHERE status = 'active'")
|
||||
assert result.table == "users"
|
||||
# WHERE columns are also extracted — needed for in-memory SQLite filtering
|
||||
assert {"name", "email"}.issubset(set(result.columns))
|
||||
assert "status" in result.columns
|
||||
|
||||
|
||||
def test_multiple_columns():
|
||||
result = parse("SELECT a, b, c FROM orders")
|
||||
assert result.table == "orders"
|
||||
assert set(result.columns) == {"a", "b", "c"}
|
||||
|
||||
|
||||
def test_insert_raises_readonly():
|
||||
with pytest.raises(ReadOnlyError):
|
||||
parse("INSERT INTO users (name) VALUES ('alice')")
|
||||
|
||||
|
||||
def test_update_raises_readonly():
|
||||
with pytest.raises(ReadOnlyError):
|
||||
parse("UPDATE users SET name = 'bob' WHERE id = 1")
|
||||
|
||||
|
||||
def test_delete_raises_readonly():
|
||||
with pytest.raises(ReadOnlyError):
|
||||
parse("DELETE FROM users WHERE id = 1")
|
||||
|
||||
|
||||
def test_wildcard_raises_unsupported():
|
||||
with pytest.raises(UnsupportedQueryError):
|
||||
parse("SELECT * FROM users")
|
||||
|
||||
|
||||
def test_join_raises_unsupported():
|
||||
with pytest.raises(UnsupportedQueryError):
|
||||
parse("SELECT a.name, b.title FROM users a JOIN orders b ON a.id = b.user_id")
|
||||
Reference in New Issue
Block a user