converting to quart app w/ sqlite

This commit is contained in:
lza_menace 2023-02-23 14:19:51 -08:00
parent e121cc8920
commit 4037dc7b78
23 changed files with 83 additions and 4044 deletions

14
Makefile Normal file
View File

@ -0,0 +1,14 @@
.PHONY: format help
# Help system from https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
.DEFAULT_GOAL := help
help:
@grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
setup: ## Establish local environment with dependencies installed
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
up: ## Run Grafana container
docker-compose up -d

BIN
data/mm.db Normal file

Binary file not shown.

BIN
data/mm.db-shm Normal file

Binary file not shown.

BIN
data/mm.db-wal Normal file

Binary file not shown.

View File

@ -5,7 +5,7 @@ volumes:
services:
grafana:
image: grafana/grafana:6.5.0
container_name: trader_grafana
container_name: marketmaker_dashboard
ports:
- 127.0.0.1:3000:3000
environment:
@ -19,15 +19,4 @@ services:
GF_USERS_ALLOW_ORG_CREATE: "false"
GF_LOG_LEVEL: "debug"
volumes:
- grafana:/var/lib/grafana
postgres:
image: postgres:9.6.15-alpine
container_name: trader_postgres
ports:
- 5432:5432
environment:
POSTGRES_PASSWORD: ${DB_PASS}
POSTGRES_USER: ${DB_USER}
POSTGRES_DB: ${DB_NAME}
volumes:
- postgres:/var/lib/postgresql/data
- ./data/grafana:/var/lib/grafana

View File

@ -4,8 +4,8 @@ DB_PASS=yyyyy
DB_USER=trader
DB_NAME=trader_xmr
DB_HOST=127.0.0.1
TO_USER=zzzzzzzzz
TO_PASS=vvvvvvvvv
TO_KEY=zzzzzzzzz
TO_SECRET=vvvvvvvvv
TRADE_CURRENCY=WOW
TRADE_AMOUNT=300
SPREAD_TARGET=4

View File

@ -1,13 +0,0 @@
apiVersion: 1
providers:
- name: 'default'
orgId: 1
folder: ''
type: file
disableDeletion: true
editable: true
updateIntervalSeconds: 60
allowUiUpdates: true
options:
path: /var/lib/grafana/dashboards

View File

@ -1,9 +0,0 @@
apiVersion: 1
datasources:
- name: PostgreSQL
type: postgresql
url: http://prometheus:9090
access: proxy
isDefault: true
timeInterval: 10s

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
requests
peewee
psycopg2-binary
python-dotenv
hypercorn
quart

7
run.py Normal file
View File

@ -0,0 +1,7 @@
from totrader.factory import create_app
app = create_app()
if __name__ == '__main__':
app.run()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 404 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 692 KiB

1
totrader/__init__.py Normal file
View File

@ -0,0 +1 @@
from totrader.factory import create_app

16
totrader/factory.py Normal file
View File

@ -0,0 +1,16 @@
import quart.flask_patch
from quart import Quart
def create_app():
app = Quart(__name__)
app.config.from_envvar('FLASK_SECRETS', 'config.py')
@app.before_serving
async def startup():
from totrader.routes import meta
from totrader import filters
app.register_blueprint(meta.bp)
app.register_blueprint(filters.bp)
return app

15
totrader/filters.py Normal file
View File

@ -0,0 +1,15 @@
from datetime import datetime
from quart import Blueprint
bp = Blueprint('filters', 'filters')
@bp.app_template_filter('ts')
def from_ts(v):
return datetime.fromtimestamp(v)
@bp.app_template_filter('xmr_block_explorer')
def xmr_block_explorer(v):
return f'https://www.exploremonero.com/transaction/{v}'

View File

@ -1,23 +1,14 @@
from os import getenv
from datetime import datetime
from dotenv import load_dotenv
from peewee import *
from datetime import datetime, timedelta
from playhouse.sqliteq import SqliteQueueDatabase
load_dotenv('.env')
db = PostgresqlDatabase(
getenv('DB_NAME', 'trader'),
user=getenv('DB_USER'),
password=getenv('DB_PASS'),
host=getenv('DB_HOST', '127.0.0.1'),
port=getenv('DB_PORT', 5432)
)
db = SqliteQueueDatabase('data/mm.db')
def get_time():
now = datetime.now()
now = now + timedelta(hours=7)
return now
class Ticker(Model):
id = AutoField()
@ -32,7 +23,7 @@ class Ticker(Model):
spread_btc = DoubleField()
spread_sats = IntegerField()
spread_perc = DoubleField()
date = DateTimeField(default=get_time)
date = DateTimeField(default=datetime.utcnow)
class Meta:
database = db
@ -41,7 +32,7 @@ class Balance(Model):
total = DoubleField()
available = DoubleField()
currency = CharField()
date = DateTimeField(default=get_time)
date = DateTimeField(default=datetime.utcnow)
class Meta:
database = db
@ -55,7 +46,7 @@ class Order(Model):
uuid = TextField(null=True)
active = BooleanField(default=True)
cancelled = BooleanField(default=False)
date = DateTimeField(default=get_time)
date = DateTimeField(default=datetime.utcnow)
class Meta:
database = db
@ -63,7 +54,7 @@ class Order(Model):
class Earning(Model):
trade_pair = CharField()
quantity = DoubleField()
date = DateTimeField(default=get_time)
date = DateTimeField(default=datetime.utcnow)
class Meta:
database = db

View File

9
totrader/routes/meta.py Normal file
View File

@ -0,0 +1,9 @@
from quart import Blueprint, render_template
bp = Blueprint('meta', 'meta')
@bp.route('/')
async def index():
return await render_template('index.html')

View File

@ -0,0 +1 @@
hello

View File

@ -2,13 +2,15 @@
import logging
from os import getenv
from dotenv import load_dotenv
from argparse import ArgumentParser
from datetime import datetime
from decimal import Decimal
from random import uniform
from time import sleep
from db import Ticker, Balance, Order, Earning
from dotenv import load_dotenv
from models import Ticker, Balance, Order, Earning
from tradeogre import TradeOgre

View File

@ -10,8 +10,8 @@ class TradeOgre(object):
load_dotenv('.env')
self.base = 'https://tradeogre.com/api/v1'
self.auth = HTTPBasicAuth(
getenv('TO_USER'),
getenv('TO_PASS')
getenv('TO_KEY'),
getenv('TO_SECRET')
)
def req(self, route, method='get', data={}):