# Filename: db.py # Version : 0.1 # Author : Lisa Esselink # Purpose : DB access functions # Usage : Database functions to store and retrieve data # # Copyright (c) Lisa Esselink. All rights reserved. # Licensend under the Creative Commons Attribution-NonCommercial 4.0 International License. # See LICENSE file in the project root for full license information. # import filedb as uorm, os, sys from ucollections import OrderedDict from . import core _dbc = uorm.DB(core.working_dir + "config") _config = {} class configTable(uorm.Model): # Create config table __db__ = _dbc __table__ = "config" __schema__ = OrderedDict([ ("timestamp", uorm.now), ("name", "uPyEasy"), ("unit", 0), ("port", 80), ("ssl", "off"), ("password", ""),
import os import sys from ucollections import OrderedDict, namedtuple import ujson import utime import uos import filedb from . import shared db = filedb.DB(shared.farm_dir+"db") class BaseModel(filedb.Model): __db__ = db __table__ = None __schema__ = None __fields__ = None @classmethod def row(cls): try: return next(cls.rows()) except StopIteration: return None @classmethod def json2row(cls, obj): return {k: obj.get(k) for k in cls.__fields__} @classmethod
from ucollections import OrderedDict import filedb as uorm db = uorm.DB("notes-db") class Note(uorm.Model): __db__ = db __table__ = "note" __schema__ = OrderedDict([ ("timestamp", ("TIMESTAMP", uorm.now)), ("archived", ("INT", 0)), ("content", ("TEXT", "")), ]) @classmethod def mapkeys(cls, obj): return [obj.get(k) for k in cls.__schema__.keys()] @classmethod def public(cls): res = [x for x in cls.scan() if x.archived == 0] res.sort(key=lambda x: x.timestamp, reverse=True) return res
from ucollections import OrderedDict import filedb as uorm db = uorm.DB("login-db") class LoginData(uorm.Model): __db__ = db __table__ = "login" __schema__ = OrderedDict([ ("timestamp", ("TIMESTAMP", uorm.now)), ("archived", ("INT", 0)), ("username", ("TEXT", "")), ("password", ("TEXT", "")), ("email", ("TEXT", "")), ("street", ("TEXT", "")), ("city", ("TEXT", "")), ("postcode", ("TEXT", "")), ("country", ("TEXT", "")), ("mobile", ("TEXT", "")), ("content", ("TEXT", "")), ]) @classmethod def mapkeys(cls, obj): return [obj.get(k) for k in cls.__schema__.keys()] @classmethod def public(cls): res = [x for x in cls.scan() if x.archived == 0]