import os
+from logger import logger
+
class Config:
def __init__(self) -> None:
- self.data_path = self.load_data_path()
-
- self.username = self.load_username()
- self.password = self.load_password()
-
- self.session_key = self.load_session_key()
- self.session_expiry_days = self.load_session_expiry_days()
-
- def load_data_path(self):
- return os.environ["FLATNOTES_PATH"]
-
- def load_username(self):
- return os.environ["FLATNOTES_USERNAME"]
-
- def load_password(self):
- return os.environ["FLATNOTES_PASSWORD"]
-
- def load_session_key(self):
- return os.environ["FLATNOTES_SECRET_KEY"]
-
- def load_session_expiry_days(self):
- return int(os.environ.get("FLATNOTES_SESSION_EXPIRY_DAYS", 30))
+ self.data_path = self.get_data_path()
+
+ self.username = self.get_username()
+ self.password = self.get_password()
+
+ self.session_key = self.get_session_key()
+ self.session_expiry_days = self.get_session_expiry_days()
+
+ @classmethod
+ def get_env(cls, key, mandatory=False, default=None, cast_int=False):
+ value = os.environ.get(key)
+ if mandatory and not value:
+ logger.error(f"Environment variable {key} must be set.")
+ exit(1)
+ if not mandatory and not value:
+ return default
+ if cast_int:
+ try:
+ value = int(value)
+ except (TypeError, ValueError):
+ logger.error(f"Invalid value '{value}' for {key}.")
+ exit(1)
+ return value
+
+ def get_data_path(self):
+ return self.get_env("FLATNOTES_PATH", mandatory=True)
+
+ def get_username(self):
+ return self.get_env("FLATNOTES_USERNAME", mandatory=True)
+
+ def get_password(self):
+ return self.get_env("FLATNOTES_PASSWORD", mandatory=True)
+
+ def get_session_key(self):
+ return self.get_env("FLATNOTES_SECRET_KEY", mandatory=True)
+
+ def get_session_expiry_days(self):
+ return self.get_env(
+ "FLATNOTES_SESSION_EXPIRY_DAYS",
+ mandatory=False,
+ default=30,
+ cast_int=True,
+ )
config = Config()
import glob
-import logging
import os
import re
from datetime import datetime
from whoosh.support.charset import accent_map
from helpers import empty_dir, re_extract, strip_ext
+from logger import logger
MARKDOWN_EXT = ".md"
INDEX_SCHEMA_VERSION = "3"
if index_dir_exists and whoosh.index.exists_in(
self.index_dir, indexname=INDEX_SCHEMA_VERSION
):
- logging.info("Loading existing index")
+ logger.info("Loading existing index")
return whoosh.index.open_dir(
self.index_dir, indexname=INDEX_SCHEMA_VERSION
)
else:
if index_dir_exists:
- logging.info("Deleting outdated index")
+ logger.info("Deleting outdated index")
empty_dir(self.index_dir)
else:
os.mkdir(self.index_dir)
- logging.info("Creating new index")
+ logger.info("Creating new index")
return whoosh.index.create_in(
self.index_dir, IndexSchema, indexname=INDEX_SCHEMA_VERSION
)
# Delete missing
if not os.path.exists(idx_filepath):
writer.delete_by_term("filename", idx_filename)
- logging.info(f"'{idx_filename}' removed from index")
+ logger.info(f"'{idx_filename}' removed from index")
# Update modified
elif (
datetime.fromtimestamp(os.path.getmtime(idx_filepath))
!= idx_note["last_modified"]
):
- logging.info(f"'{idx_filename}' updated")
+ logger.info(f"'{idx_filename}' updated")
self._add_note_to_index(
writer, Note(self, strip_ext(idx_filename))
)
for note in self._get_notes():
if note.filename not in indexed:
self._add_note_to_index(writer, note)
- logging.info(f"'{note.filename}' added to index")
+ logger.info(f"'{note.filename}' added to index")
writer.commit()
self.last_index_update = datetime.now()
--- /dev/null
+import logging
+import os
+
+logging.basicConfig(
+ format="%(asctime)s [%(levelname)s]: %(message)s",
+ datefmt="%Y-%m-%d %H:%M:%S",
+)
+logger = logging.getLogger()
+logger.setLevel(os.environ.get("LOGLEVEL", "INFO").upper())
-import logging
-import os
import secrets
from typing import List, Literal
from flatnotes import Flatnotes, InvalidTitleError, Note
from models import LoginModel, NoteModel, NotePatchModel, SearchResultModel
-logging.basicConfig(
- format="%(asctime)s [%(levelname)s]: %(message)s",
- datefmt="%Y-%m-%d %H:%M:%S",
-)
-logger = logging.getLogger()
-logger.setLevel(os.environ.get("LOGLEVEL", "INFO").upper())
-
app = FastAPI()
flatnotes = Flatnotes(config.data_path)