Xync DB schema: Tortoise ORM models, enums, pydantic DTOs.
Project description
XyncDB
TortoiseORM models, enums, pydantic DTOs, and migrations для аггрегатора бирж/платформ p2p-торговли. Single source of truth for data shape across the monorepo.
Основные db сущности:
-
Ex: p2p биржа/платформа
-
Person: сущность живого человека / физического лица
-
User: Person являющийся нашим юзером (зареганный на нашей платформе xync)
-
Actor: Person являющийся любым юзером на Ex (как 3-и лица: наши контрагенты в p2p-сделках, так и наши агенты)
-
Agent: Actor xync-юзера с auth-доступами к Ex, может слать запросы. Сущность с помощью которой наши Users совершают действия на Ex. (Связь с User через Actor -> Person)
-
Username: telegram id, nick-и, и возможно телефоны наших User-ов
-
Cur: Фиатные(банковские) валюты
-
CurEx: Cur на конкретной Ex, c minimum размером сделки в этой валюте, и ее десятичный scale-ом на этой Ex
-
Coin: Крипто монеты
-
CoinEx: Coin на конкретной Ex, c minimum размером сделки по этой монете, и ее десятичный scale-ом на этой Ex
-
Pair: Все торговые пары Coin/Cur какие бывают
-
PairEx: Pair которые есть на конкретной Ex
-
PairSide: Направления is_sell(продажа или покупка) по каждой Pair
-
Pm: Платежные системы (банки, кошельки, и тд) фиатных валют
-
PmEx: Pm на конкретной бирже (содержимое таблицы pmex говорит о том, через какие Pm какие Ex поддерживают оплату сделок)
-
PmCur: Пары Pm-Cur (таблица pmcur говорит какие Pm поддерживают какие Cur
-
Cred: платежные реквизиты Person-a по конкретному PmCur
-
Fiat: сумма на балансе конкретного Cred
-
Addr: адрес по которому лежит определенный Coin конкретного Actor-a
-
Asset: сумма, которая лежит на определенном Addr
-
Ad: объявление maker-a (Actor) по PairSide (т.е: о покупке или продаже Coin за Cur) для конкретных Pm
-
MyAd: Ad нашего Agent-a (Actor) по конкретным Fiat-ам
-
Cond: текстовое описание условий сделки по Ad
-
Order: сделка открытая taker-ом (Actor) по Ad, на определенную сумму на конкретный Cred того Actor-a, кто является продавцом в сделке
-
Transfer: денежный перевод определенной сумму (amount) по конкретному Order-у
-
Transaction: внутренний денежный перевод (на платформе xync) от User-а sender User-у receiver
Relations
classDiagram
direction BT
class Actor {
uint8 exid
uint1 ex_id
varchar(63) name
integer person_id
integer id
}
class Ad {
uint8 exid
uint4 price
integer premium
uint4 amount
uint8 quantity
uint4 min_fiat
uint4 max_fiat
smallint status
boolean filtered
integer cond_id
integer maker_id
smallint pair_side_id
integer id
}
class ad_pm {
integer ad_id
integer pm_id
}
class Addr {
integer actor_id
smallint coin_id
integer id
}
class agent {
integer actor_id
jsonb auth
integer expire_at
smallint status
uint1 same_dir_ad
integer id
}
class Asset {
smallint typ
uint8 free
uint8 freeze
uint8 lock
uint8 target
integer addr_id
integer id
}
class coin {
varchar(15) ticker
uint1 scale
smallint typ
smallint id
}
class CoinEx {
varchar(32) exid
uint1 ex_id
smallint coin_id
bigint minimum
uint1 scale
boolean p2p
integer id
}
class cond {
varchar(4095) raw_txt
integer id
}
class Cred {
varchar(255) detail
varchar(127) name
integer pmcur_id
integer person_id
varchar(255) extra
integer ovr_pm_id
integer id
}
class CredEx {
uint8 exid
uint1 ex_id
integer cred_id
integer id
}
class Cur {
varchar(3) ticker
uint1 scale
uint1 id
}
class CurEx {
varchar(32) exid
uint1 cur_id
uint1 ex_id
uint4 minimum
uint1 scale
integer id
}
class Ex {
varchar(31) name
varchar(63) host
smallint typ
smallint status
varchar(511) logo
uint1 id
}
class Fiat {
uint4 amount
uint4 target
uint4 min_deposit
integer cred_id
integer id
}
class my_ad {
integer ad_id
uint1 target_place
bytea hex
timestamp(0) shared_at
boolean blocked
integer id
}
class myad_cred {
integer my_ad_id
integer credex_id
}
class Order {
uint8 exid
uint4 amount
uint8 quantity
smallint status
integer ad_id
integer cred_id
integer taker_id
uint2 maker_topic
uint2 taker_topic
timestamp updated_at
integer id
}
class Pair {
smallint coin_id
uint1 cur_id
bigint rate
smallint id
}
class pair_side {
smallint pair_id
boolean is_sell
smallint id
}
class PairEx {
smallint pair_id
uint1 ex_id
smallint fee
integer id
}
class person {
varchar(127) name
integer user_id
smallint status
varchar(255) note
integer id
}
class Pm {
varchar(255) norm
varchar(7) acronym
varchar(63) alias
boolean ok
boolean bank
boolean qr
uint2 fee
smallint typ
integer id
}
class PmCur {
uint1 cur_id
integer pm_id
integer id
}
class pmex {
varchar(63) exid
uint1 ex_id
integer pm_id
varchar(255) name
integer id
}
class transaction {
uint4 amount
smallint status
bytea proof
integer ts
uint1 cur_id
integer receiver_id
integer sender_id
uuid id
}
class transfer {
uint4 amount
varchar(32) pmid
varchar(63) sender_acc
integer order_id
integer file_id
integer id
}
class user {
varchar(63) first_name
varchar(31) last_name
varchar(127) pic
boolean blocked
smallint lang
smallint role
smallint status
uint2 bonus
smallint tz
bytea prv
bytea pub
integer ref_id
bigint username_id
integer id
}
class username {
varchar(127) username
uint8 phone
bigint id
}
Actor --> Ex : ex_id->ex.id
Actor --> person : person_id->person.id
Ad --> Actor : maker_id->maker.id
Ad --> cond : cond_id->cond.id
Ad --> pair_side : pair_side_id->pair_side.id
ad_pm --> Ad : ad_id->ad.id
ad_pm --> Pm : pm_id->pm.id
Addr --> Actor : actor_id->actor.id
Addr --> coin : coin_id->coin.id
agent --> Actor : actor_id->actor.id
Asset --> Addr : addr_id->addr.id
Asset --> agent : agent_id->agent.id
CoinEx --> coin : coin_id->coin.id
CoinEx --> Ex : ex_id->ex.id
Cred --> person : person_id->person.id
Cred --> Pm : ovr_pm_id->ovr_pm.id
Cred --> PmCur : pmcur_id->pmcur.id
CredEx --> Cred : cred_id->cred.id
CredEx --> Ex : ex_id->ex.id
CurEx --> Cur : cur_id->cur.id
CurEx --> Ex : ex_id->ex.id
Fiat --> Cred : cred_id->cred.id
my_ad --> Ad : ad_id->ad.id
myad_cred --> CredEx : credex_id->credex.id
myad_cred --> my_ad : my_ad_id->my_ad.id
Order --> Actor : taker_id->taker.id
Order --> Ad : ad_id->ad.id
Order --> Cred : cred_id->cred.id
Pair --> coin : coin_id->coin.id
Pair --> Cur : cur_id->cur.id
pair_side --> Pair : pair_id->pair.id
PairEx --> Ex : ex_id->ex.id
PairEx --> Pair : pair_id->pair.id
person --> user : user_id->user.id
Pm --> Cur : df_cur_id->df_cur.id
PmCur --> Cur : cur_id->cur.id
PmCur --> Pm : pm_id->pm.id
pmex --> Ex : ex_id->ex.id
pmex --> Pm : pm_id->pm.id
transaction --> Cur : cur_id->cur.id
transaction --> user : sender_id->sender.id
transaction --> user : receiver_id->receiver.id
transfer --> Order : order_id->order.id
user --> user : ref_id->ref.id
user --> username : username_id->username.id
Общее правило для всех сущностей, которые относятся к конкретной Ex:
[Actor, CoinEx, CurEx, PmEx, CredEx, Ad, Order]
id- id сущности в нашей системе (в xync)exid- id сущности на этомExex_id- idEx-a которому принадлежит сущность
Исключение Ad и Order:
- в
Adнет непосредственноex_id, у него естьmaker_id, через которого получаемactor.ex_id - а в
Orderсоответственно черезad_idполучаемad.actor.ex_id
Migrations (native Tortoise CLI — no aerich)
cd packages/xync-db
tortoise init # only once
tortoise makemigrations # detect changes
tortoise migrate # apply
tortoise downgrade models 0001_initial # roll back
tortoise sqlmigrate models 0001_initial # preview SQL
Config lives in this package's pyproject.toml under [tool.tortoise].
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xync_db-0.1.1.tar.gz.
File metadata
- Download URL: xync_db-0.1.1.tar.gz
- Upload date:
- Size: 472.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
136d403b93adf4727785b443871ed6db80ce6bcc7cba6d43a702a269d39f3638
|
|
| MD5 |
7a45c043daa75c64206edca6d792ff9c
|
|
| BLAKE2b-256 |
891ef3569c4dfe3d73942503c9e21769b68a867feb0979406619b4ecd1e9d709
|
Provenance
The following attestation bundles were made for xync_db-0.1.1.tar.gz:
Publisher:
auto-release-db.yml on XyncNet/service
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xync_db-0.1.1.tar.gz -
Subject digest:
136d403b93adf4727785b443871ed6db80ce6bcc7cba6d43a702a269d39f3638 - Sigstore transparency entry: 1869117849
- Sigstore integration time:
-
Permalink:
XyncNet/service@d024bdebf08d56cd43f972b250c2c0f86fa3a6a3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/XyncNet
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
auto-release-db.yml@d024bdebf08d56cd43f972b250c2c0f86fa3a6a3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file xync_db-0.1.1-py3-none-any.whl.
File metadata
- Download URL: xync_db-0.1.1-py3-none-any.whl
- Upload date:
- Size: 485.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
040abb11727c31b0b093db76e6e99017e45f82dcb651ecf70bb6f4bc2cb74c23
|
|
| MD5 |
0032e420619d74ad482f25e207baefbb
|
|
| BLAKE2b-256 |
0d9136549bf60cb5e418a67dc96c90ed076ec9e0ecf795826a1714f5b93c7e3b
|
Provenance
The following attestation bundles were made for xync_db-0.1.1-py3-none-any.whl:
Publisher:
auto-release-db.yml on XyncNet/service
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xync_db-0.1.1-py3-none-any.whl -
Subject digest:
040abb11727c31b0b093db76e6e99017e45f82dcb651ecf70bb6f4bc2cb74c23 - Sigstore transparency entry: 1869118058
- Sigstore integration time:
-
Permalink:
XyncNet/service@d024bdebf08d56cd43f972b250c2c0f86fa3a6a3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/XyncNet
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
auto-release-db.yml@d024bdebf08d56cd43f972b250c2c0f86fa3a6a3 -
Trigger Event:
push
-
Statement type: