Skip to main content

Python package that provides the XStore model class, built on top of xapian_model.base.BaseXapianModel

Project description

xapian-store

A Python package providing the XStore model class for managing store data using Xapian as the underlying storage engine.

Features

  • Built on top of xapian_model.base.BaseXapianModel
  • Comprehensive store schema with support for multiple store types
  • Type-safe field definitions with validation
  • Support for soft deletes and timestamps
  • Configurable store attributes (slug, domain, name, owner, type, etc.)
  • Visual customization fields (photo, header, color)

Requirements

  • Python 3.12 or higher
  • xapian-model >= 0.3.1
  • pyxapiand >= 2.1.0

Installation

pip install xapian-store

Quick Start

from xstore import XStore, STORE_TYPE_AFFILIATE, get_store_schema

# XStore comes with a default INDEX_TEMPLATE and SCHEMA;
# override them in a subclass if your application requires it.
class MyStore(XStore):
    INDEX_TEMPLATE = "my_stores"

# Create a store instance
store = MyStore()

# Access the schema directly
schema = get_store_schema(foreign_schema='.schema/store')

Store Types

The package supports the following store types:

  • STORE_TYPE_NONE - No specific type
  • STORE_TYPE_AFFILIATE - Affiliate store
  • STORE_TYPE_AFFINITY - Affinity store
  • STORE_TYPE_FRANCHISE - Franchise store
  • STORE_TYPE_SUPPLIER - Supplier store
  • STORE_TYPE_MASHUP - Mashup store

Schema Configuration

The store schema includes the following main fields:

  • Identification: id, slug, domain, canonical_url
  • Metadata: name, owner, supplier, store_type
  • Visual: photo, header, color, base_color
  • Status: is_published, hidden, is_deleted, is_root_affinity_store
  • Timestamps: created_at, updated_at, deleted_at
  • Contact: from_email, address

Security Note

For security reasons, the following values should be reviewed and overridden per application:

  • INDEX_TEMPLATE — defaults to 'stores'; override in a subclass if needed
  • foreign_schema — passed as a parameter to get_store_schema()

Configuration Example

from xstore import XStore, get_store_schema

# Override INDEX_TEMPLATE and SCHEMA for your application
class MyStore(XStore):
    INDEX_TEMPLATE = "my_stores"
    SCHEMA = get_store_schema(foreign_schema='.schema/my_store')

# Use your store
store = MyStore()

Development

Setup

The project uses direnv to automatically create and activate a virtual environment:

# With direnv installed, simply cd into the project
cd xstore

# Or manually create the environment
python3 -m venv .venv
source .venv/bin/activate

Project Structure

xstore/
├── src/
│   └── xstore/
│       ├── __init__.py     # Public API exports
│       ├── models.py       # XStore model class
│       └── schemas.py      # Schema definitions
├── pyproject.toml          # Project configuration
└── README.md              # This file

License

MIT License - see LICENSE file for details.

Links

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Authors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xapian_store-0.2.1.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xapian_store-0.2.1-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file xapian_store-0.2.1.tar.gz.

File metadata

  • Download URL: xapian_store-0.2.1.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for xapian_store-0.2.1.tar.gz
Algorithm Hash digest
SHA256 1e82a7ecd1b90446afe8c28ca14cea9f0580feaf38bbddeb75482cb266f4824e
MD5 c15d2a85d5700470458842c548bc4fb8
BLAKE2b-256 f5f7086842ea22cac58e85703d6649b23bb33dd7f9d45aa645b4bb412016db73

See more details on using hashes here.

File details

Details for the file xapian_store-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: xapian_store-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for xapian_store-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 132d086aeddc721887007543519bb2315e7347be5939ad0cfbdfed884c3ed080
MD5 1238c85a0ea196f4885c62e8fe826afb
BLAKE2b-256 0337081acb22a0b4d5fec69046ce083344d4d73b3476abcce90b1f6b967a5d3e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page