Skip to main content

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 сущности на этом Ex
  • ex_id - id Ex-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].

Download files

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

Source Distribution

xync_db-0.4.6.tar.gz (487.3 kB view details)

Uploaded Source

Built Distribution

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

xync_db-0.4.6-py3-none-any.whl (502.3 kB view details)

Uploaded Python 3

File details

Details for the file xync_db-0.4.6.tar.gz.

File metadata

  • Download URL: xync_db-0.4.6.tar.gz
  • Upload date:
  • Size: 487.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for xync_db-0.4.6.tar.gz
Algorithm Hash digest
SHA256 3537bf789cef893ab1fe3c6339d1b871a8051cb0232b8bc16f878a443b0c2b3d
MD5 ad88f1a8ba3daf6420243b6e5f00b602
BLAKE2b-256 6750d674b56f4117525ab05feb7404257f51b3f2377fe3450a7b9054d79cec2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for xync_db-0.4.6.tar.gz:

Publisher: auto-release-db.yml on XyncNet/service

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xync_db-0.4.6-py3-none-any.whl.

File metadata

  • Download URL: xync_db-0.4.6-py3-none-any.whl
  • Upload date:
  • Size: 502.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for xync_db-0.4.6-py3-none-any.whl
Algorithm Hash digest
SHA256 d8720b4539762792353a193567e5db0e2b22e612fbc82978075d0842a39949c1
MD5 770a434e003d648f4e0e7ad43ccb1627
BLAKE2b-256 d47a6519da4293ec895b161078184749329db0cf23c45a47c10b22c5bb87e677

See more details on using hashes here.

Provenance

The following attestation bundles were made for xync_db-0.4.6-py3-none-any.whl:

Publisher: auto-release-db.yml on XyncNet/service

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.5.4

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.10

2 files

0.4.9

2 files

0.4.8

2 files

0.4.7

2 files

This release

0.4.6 This release

2 files

0.4.5

2 files

0.4.4

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.2

2 files

Supported by

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