Ejemplo n.º 1
0
def test_frompath_queries_cls(sql_dir):
    class TestQueries(Queries):
        pass

    queries = aiosql.from_path(sql_dir, "aiosqlite", queries_cls=TestQueries)
    assert isinstance(queries, TestQueries)
Ejemplo n.º 2
0
def queries():
    dir_path = Path(__file__).parent / "blogdb/sql"
    return aiosql.from_path(dir_path, "aiosqlite")
Ejemplo n.º 3
0
def queries():
    dir_path = Path(__file__).parent / "blogdb/sql"
    return aiosql.from_path(dir_path, "asyncpg", RECORD_CLASSES)
Ejemplo n.º 4
0
# coding: utf-8
from __future__ import annotations

import datetime as dt
import itertools
import typing as t

import aiosql
from dropbox import Dropbox
from psycopg2.extensions import connection

from gargbot_3000 import config
from gargbot_3000.database import JinjaSqlAdapter
from gargbot_3000.logger import log

queries = aiosql.from_path("sql/picture.sql", driver_adapter=JinjaSqlAdapter)


def connect_dbx() -> Dropbox:  # no test coverage
    dbx = Dropbox(config.dropbox_token)
    log.info("Connected to dbx")
    return dbx


def sortout_args(
    args: t.Set[str],
    topic: t.Optional[str],
    year: t.Optional[str],
    garglings: list[str],
    exclusive: bool,
) -> tuple[list, set]:
Ejemplo n.º 5
0
def queries():
    dir_path = Path(__file__).parent / "blogdb" / "sql"
    return aiosql.from_path(dir_path, "psycopg2", RECORD_CLASSES)
Ejemplo n.º 6
0
import datetime as dt
from functools import partial
import time
import typing as t

import aiosql
import dropbox
import psycopg2
from psycopg2.extensions import connection
from requests.exceptions import SSLError

from gargbot_3000 import pictures, quotes
from gargbot_3000.journey import achievements
from gargbot_3000.logger import log

queries = aiosql.from_path("sql/gargling.sql", "psycopg2")


def prettify_date(date: dt.datetime) -> str:
    timestamp = int(time.mktime(date.timetuple()))
    return (f"<!date^{timestamp}^{{date_pretty}} "
            f"at {date.strftime('%H:%M')}| "
            f"{date.strftime('%A %d. %B %Y %H:%M')}>")


def command_explanation(server: bool = False):
    commands = (
        "`@gargbot_3000 hvem [spørsmål]`: svarer på spørsmål om garglings \n"
        "`@gargbot_3000 pic [lark/fe/skating/henging] [kun] [gargling] [år]`: random bilde\n"
        "`@gargbot_3000 forum [garling]`: henter tilfeldig sitat fra ye olde forumet\n"
        "`@gargbot_3000 msn [garling]`: utfrag fra tilfeldig msn samtale\n"
Ejemplo n.º 7
0
#! /usr/bin/env python3.6
# coding: utf-8
import datetime as dt
import html
import random
import re
import typing as t

import aiosql
import bbcode
from htmlslacker import HTMLSlacker
from psycopg2.extensions import connection

from gargbot_3000 import config

forum_queries = aiosql.from_path("sql/post.sql", "psycopg2")
msn_queries = aiosql.from_path("sql/message.sql", "psycopg2")


def _sanitize_post(inp, bbcode_uid: str):
    smls = re.compile(r'<!-- s.*? --><img src=\\?"\{SMILIES_PATH\}/.*?\\?" '
                      'alt=\\?"(.*?)\\?" title=\\?".*?" /><!-- s.*? -->')
    inp = re.sub(smls, r"\1", inp)
    inp = html.unescape(inp)

    inp = inp.replace(":" + bbcode_uid, "")

    img_tags = re.compile(r"\[/?img\]")
    inp = re.sub(img_tags, "", inp)

    youtube_embeds = re.compile(
Ejemplo n.º 8
0
import os
import sqlite3

import aiosql

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

conn = sqlite3.connect("db.db")
queries = aiosql.from_path(os.path.join(BASE_DIR, "queries.sql"), "sqlite3")
Ejemplo n.º 9
0
import sqlite3
import csv
from io import StringIO

from bottle import get, post, request, template, run, static_file, response
import aiosql

CONN = sqlite3.connect("todo.db")
QUERIES = aiosql.from_path("tasks.sql", "sqlite3")


@get("/static/js/<filename>")
def static_js(filename):
    return static_file(filename, root="static/js")


@get("/")
@post("/")
def index():
    if request.method == "POST":
        task_text = request.forms.taskInput
        add_task(task_text)

    return template('templates/index.html', tasks=get_tasks())


@post("/delete/<id_task:int>")
def delete(id_task):
    delete_task(id_task)

Ejemplo n.º 10
0
def queries():
    p = Path(__file__).parent / "blogdb" / "sql"
    return aiosql.from_path(p, "sqlite3", RECORD_CLASSES)
Ejemplo n.º 11
0
import sys
import time
import typing as t
from operator import attrgetter

import aiosql
import pendulum
from dropbox import Dropbox
from psycopg2.extensions import connection
from slackclient import SlackClient

from dataclasses import dataclass
from gargbot_3000 import config, database, health, pictures, task
from gargbot_3000.logger import log

queries = aiosql.from_path("sql/congrats.sql", "psycopg2")

mort_picurl = "https://pbs.twimg.com/media/DAgm_X3WsAAQRGo.jpg"


@dataclass(frozen=True)
class Recipient:
    nick: str
    slack_id: str
    age: int


def todays_recipients(conn: connection) -> t.List[Recipient]:
    now_tz = pendulum.now(config.tz)
    data = queries.congrats_for_date(conn, month=now_tz.month, day=now_tz.day)
    recipients = [
Ejemplo n.º 12
0
import aiosqlite
import sys
import logging
from dataclasses import dataclass


@dataclass
class User:
    user_id: int
    username: str
    firstname: str
    lastname: str


logging.basicConfig(level=logging.DEBUG)
queries = aiosql.from_path("queries.sql", "aiosqlite", record_classes={"User": User})
print("****************************************", file=sys.stderr)
for name in queries.available_queries:
    print("    ", name, file=sys.stderr)
print("****************************************", file=sys.stderr)


async def main():
    # Parallel queries!!!
    async with aiosqlite.connect("greetings.db") as conn:
        greetings, user = await asyncio.gather(
            queries.get_all_greetings(conn),
            queries.get_user_by_username(conn, username="******"),
        )

        for _, greeting in greetings:
Ejemplo n.º 13
0
Archivo: sql.py Proyecto: sysid/twbm
import sqlite3

import aiosql

queries = aiosql.from_path("../sql/queries.sql", "sqlite3")

if __name__ == "__main__":
    # db_url = '../test/tests_data/test.db'
    db_url = "./bm2.db"
    conn = sqlite3.connect(db_url)
    print(queries)
    # r = queries.get_all(conn)
    # print(r)
    r = queries.create_db(conn)
    print(r)
Ejemplo n.º 14
0
def load_sql_commands(*args, **kwargs):
    mode = kwargs.get('mode', 'aiosqlite')
    cmd_file = os.path.join(__pkg_dir__, 'sql', 'commands.sql')
    cmds = aiosql.from_path(cmd_file, mode)
    return cmds
Ejemplo n.º 15
0
def test_frompath_queryloader_cls(sql_dir):
    mock_loader = mock.MagicMock(wraps=QueryLoader)

    aiosql.from_path(sql_dir, "aiosqlite", loader_cls=mock_loader)

    assert mock_loader.called
Ejemplo n.º 16
0
import asyncio
from uuid import UUID

import aiosql
import asyncpg
import edgedb
from edgeql_queries.contrib import aiosql as eq_aiosql

MOVIE_ID = UUID("6000323c-cc31-474d-828b-dadaa6404674")

pg_queries = aiosql.from_path("./aiosql_contrib.sql", "asyncpg")
edb_queries = aiosql.from_path(
    "./aiosql_contrib.edgeql",
    driver_adapter=eq_aiosql.EdgeQLAsyncAdapter,
    loader_cls=eq_aiosql.EdgeQLQueryLoader,
    queries_cls=eq_aiosql.EdgeQLQueries,
)


async def main():
    edb_conn = await edgedb.async_connect()
    pg_conn = await asyncpg.connect("postgres://postgres@localhost/postgres")

    movie = await edb_queries.select_movie_by_id(edb_conn, MOVIE_ID)
    user_record = await pg_queries.get_username_by_id(
        pg_conn,
        id=movie.director.user_id,
    )
    print(f"Director's name: {user_record[0]}")

Ejemplo n.º 17
0
from flask_jwt_extended import get_jwt_identity, jwt_required
import pendulum
import withings_api
from withings_api import AuthScope, WithingsApi, WithingsAuth
from withings_api.common import (
    Credentials,
    GetActivityField,
    GetSleepSummaryField,
    MeasureType,
)

from gargbot_3000 import config
from gargbot_3000 import database as db
from gargbot_3000.logger import log

queries = aiosql.from_path("sql/health.sql", driver_adapter=db.JinjaSqlAdapter)
blueprint = Blueprint("health", __name__)
withings_api.common.enforce_type = lambda value, expected: value


@contextmanager
def connection_context(
    conn=t.Optional[db.connection],
) -> t.Generator[db.connection, None, None]:
    if conn is not None:
        yield conn
    elif current_app:
        with current_app.pool.get_connection() as conn:
            yield conn
    else:
        conn = db.connect()
Ejemplo n.º 18
0
import argparse
import sqlite3
from pathlib import Path

import aiosql

dir_path = Path(__file__).parent
sql_path = dir_path / "sql"
db_path = dir_path / "exampleblog.db"
queries = aiosql.from_path(dir_path / "sql", "sqlite3")

users = [
    ("bobsmith", "Bob", "Smith"),
    ("johndoe", "John", "Doe"),
    ("janedoe", "Jane", "Doe"),
]
blogs = [
    (
        1,
        "What I did Today",
        """\
I mowed the lawn, washed some clothes, and ate a burger.

Until next time,
Bob""",
        "2017-07-28",
    ),
    (
        3,
        "Testing",
        """\