| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,2 +1,209 @@ | |||
| 1 | - *__pycache__ | ||
| 2 | - *env | ||
| 1 | + # Byte-compiled / optimized / DLL files | ||
| 2 | + __pycache__/ | ||
| 3 | + *.py[codz] | ||
| 4 | + *$py.class | ||
| 5 | + | ||
| 6 | + # C extensions | ||
| 7 | + *.so | ||
| 8 | + | ||
| 9 | + # Distribution / packaging | ||
| 10 | + .Python | ||
| 11 | + build/ | ||
| 12 | + develop-eggs/ | ||
| 13 | + dist/ | ||
| 14 | + downloads/ | ||
| 15 | + eggs/ | ||
| 16 | + .eggs/ | ||
| 17 | + lib/ | ||
| 18 | + lib64/ | ||
| 19 | + parts/ | ||
| 20 | + sdist/ | ||
| 21 | + var/ | ||
| 22 | + wheels/ | ||
| 23 | + share/python-wheels/ | ||
| 24 | + *.egg-info/ | ||
| 25 | + .installed.cfg | ||
| 26 | + *.egg | ||
| 27 | + MANIFEST | ||
| 28 | + | ||
| 29 | + # PyInstaller | ||
| 30 | + # Usually these files are written by a python script from a template | ||
| 31 | + # before PyInstaller builds the exe, so as to inject date/other infos into it. | ||
| 32 | + *.manifest | ||
| 33 | + *.spec | ||
| 34 | + | ||
| 35 | + # Installer logs | ||
| 36 | + pip-log.txt | ||
| 37 | + pip-delete-this-directory.txt | ||
| 38 | + | ||
| 39 | + # Unit test / coverage reports | ||
| 40 | + htmlcov/ | ||
| 41 | + .tox/ | ||
| 42 | + .nox/ | ||
| 43 | + .coverage | ||
| 44 | + .coverage.* | ||
| 45 | + .cache | ||
| 46 | + nosetests.xml | ||
| 47 | + coverage.xml | ||
| 48 | + *.cover | ||
| 49 | + *.py.cover | ||
| 50 | + .hypothesis/ | ||
| 51 | + .pytest_cache/ | ||
| 52 | + cover/ | ||
| 53 | + | ||
| 54 | + # Translations | ||
| 55 | + *.mo | ||
| 56 | + *.pot | ||
| 57 | + | ||
| 58 | + # Django stuff: | ||
| 59 | + *.log | ||
| 60 | + local_settings.py | ||
| 61 | + db.sqlite3 | ||
| 62 | + db.sqlite3-journal | ||
| 63 | + | ||
| 64 | + # Flask stuff: | ||
| 65 | + instance/ | ||
| 66 | + .webassets-cache | ||
| 67 | + | ||
| 68 | + # Scrapy stuff: | ||
| 69 | + .scrapy | ||
| 70 | + | ||
| 71 | + # Sphinx documentation | ||
| 72 | + docs/_build/ | ||
| 73 | + | ||
| 74 | + # PyBuilder | ||
| 75 | + .pybuilder/ | ||
| 76 | + target/ | ||
| 77 | + | ||
| 78 | + # Jupyter Notebook | ||
| 79 | + .ipynb_checkpoints | ||
| 80 | + | ||
| 81 | + # IPython | ||
| 82 | + profile_default/ | ||
| 83 | + ipython_config.py | ||
| 84 | + | ||
| 85 | + # pyenv | ||
| 86 | + # For a library or package, you might want to ignore these files since the code is | ||
| 87 | + # intended to run in multiple environments; otherwise, check them in: | ||
| 88 | + # .python-version | ||
| 89 | + | ||
| 90 | + # pipenv | ||
| 91 | + # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. | ||
| 92 | + # However, in case of collaboration, if having platform-specific dependencies or dependencies | ||
| 93 | + # having no cross-platform support, pipenv may install dependencies that don't work, or not | ||
| 94 | + # install all needed dependencies. | ||
| 95 | + #Pipfile.lock | ||
| 96 | + | ||
| 97 | + # UV | ||
| 98 | + # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. | ||
| 99 | + # This is especially recommended for binary packages to ensure reproducibility, and is more | ||
| 100 | + # commonly ignored for libraries. | ||
| 101 | + #uv.lock | ||
| 102 | + | ||
| 103 | + # poetry | ||
| 104 | + # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. | ||
| 105 | + # This is especially recommended for binary packages to ensure reproducibility, and is more | ||
| 106 | + # commonly ignored for libraries. | ||
| 107 | + # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control | ||
| 108 | + #poetry.lock | ||
| 109 | + #poetry.toml | ||
| 110 | + | ||
| 111 | + # pdm | ||
| 112 | + # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. | ||
| 113 | + # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python. | ||
| 114 | + # https://pdm-project.org/en/latest/usage/project/#working-with-version-control | ||
| 115 | + #pdm.lock | ||
| 116 | + #pdm.toml | ||
| 117 | + .pdm-python | ||
| 118 | + .pdm-build/ | ||
| 119 | + | ||
| 120 | + # pixi | ||
| 121 | + # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control. | ||
| 122 | + #pixi.lock | ||
| 123 | + # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one | ||
| 124 | + # in the .venv directory. It is recommended not to include this directory in version control. | ||
| 125 | + .pixi | ||
| 126 | + | ||
| 127 | + # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm | ||
| 128 | + __pypackages__/ | ||
| 129 | + | ||
| 130 | + # Celery stuff | ||
| 131 | + celerybeat-schedule | ||
| 132 | + celerybeat.pid | ||
| 133 | + | ||
| 134 | + # SageMath parsed files | ||
| 135 | + *.sage.py | ||
| 136 | + | ||
| 137 | + # Environments | ||
| 138 | + .env | ||
| 139 | + .envrc | ||
| 140 | + .venv | ||
| 141 | + env/ | ||
| 142 | + venv/ | ||
| 143 | + ENV/ | ||
| 144 | + env.bak/ | ||
| 145 | + venv.bak/ | ||
| 146 | + | ||
| 147 | + # Spyder project settings | ||
| 148 | + .spyderproject | ||
| 149 | + .spyproject | ||
| 150 | + | ||
| 151 | + # Rope project settings | ||
| 152 | + .ropeproject | ||
| 153 | + | ||
| 154 | + # mkdocs documentation | ||
| 155 | + /site | ||
| 156 | + | ||
| 157 | + # mypy | ||
| 158 | + .mypy_cache/ | ||
| 159 | + .dmypy.json | ||
| 160 | + dmypy.json | ||
| 161 | + | ||
| 162 | + # Pyre type checker | ||
| 163 | + .pyre/ | ||
| 164 | + | ||
| 165 | + # pytype static type analyzer | ||
| 166 | + .pytype/ | ||
| 167 | + | ||
| 168 | + # Cython debug symbols | ||
| 169 | + cython_debug/ | ||
| 170 | + | ||
| 171 | + # PyCharm | ||
| 172 | + # JetBrains specific template is maintained in a separate JetBrains.gitignore that can | ||
| 173 | + # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore | ||
| 174 | + # and can be added to the global gitignore or merged into this file. For a more nuclear | ||
| 175 | + # option (not recommended) you can uncomment the following to ignore the entire idea folder. | ||
| 176 | + #.idea/ | ||
| 177 | + | ||
| 178 | + # Abstra | ||
| 179 | + # Abstra is an AI-powered process automation framework. | ||
| 180 | + # Ignore directories containing user credentials, local state, and settings. | ||
| 181 | + # Learn more at https://abstra.io/docs | ||
| 182 | + .abstra/ | ||
| 183 | + | ||
| 184 | + # Visual Studio Code | ||
| 185 | + # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore | ||
| 186 | + # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore | ||
| 187 | + # and can be added to the global gitignore or merged into this file. However, if you prefer, | ||
| 188 | + # you could uncomment the following to ignore the entire vscode folder | ||
| 189 | + # .vscode/ | ||
| 190 | + | ||
| 191 | + # Ruff stuff: | ||
| 192 | + .ruff_cache/ | ||
| 193 | + | ||
| 194 | + # PyPI configuration file | ||
| 195 | + .pypirc | ||
| 196 | + | ||
| 197 | + # Cursor | ||
| 198 | + # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to | ||
| 199 | + # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data | ||
| 200 | + # refer to https://docs.cursor.com/context/ignore-files | ||
| 201 | + .cursorignore | ||
| 202 | + .cursorindexingignore | ||
| 203 | + | ||
| 204 | + # Marimo | ||
| 205 | + marimo/_static/ | ||
| 206 | + marimo/_lsp/ | ||
| 207 | + __marimo__/ | ||
| 208 | + | ||
| 209 | + config.ini | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1 +1,4 @@ | |||
| 1 | 1 | ||
| 2 | + - Make a Landing Page | ||
| 3 | + - Make work transpiler.py | ||
| 4 | + - Make commands to configure a new exsql database (with exsql.py) | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,4 +1,31 @@ | |||
| 1 | 1 | ||
| 2 | - # TODO | ||
| 3 | - - Make a "lark" console command for add libraries | ||
| 4 | - - Make work all XD | ||
| 2 | + # What is EXSQL about? | ||
| 3 | + | ||
| 4 | + **Enhanced and eXtended Structured Query Language** (**EXSQL**) is actually a transpiler (like JSX), | ||
| 5 | + which seeks to **improve** SQL by simplifying tasks and improving the **syntax**, such as inheritance in databases, | ||
| 6 | + making it a rather complicated and exhausting task, instead, thanks to EXSQL we could do something like “SUBTYPE OF” | ||
| 7 | + in a CREATE TABLE and it would generate all the necessary **logic** for the database but we would be using EXSQL to do everything. | ||
| 8 | + | ||
| 9 | + ## How to start a database with exsql | ||
| 10 | + | ||
| 11 | + At this time EXSQL only supports dessert databases and starting a database with exsql configuration is useless besides having a useless schema, but here is how: | ||
| 12 | + | ||
| 13 | + <hr/> | ||
| 14 | + | ||
| 15 | + You have to run the command: | ||
| 16 | + ```bash | ||
| 17 | + python exsql.py login <server_user_name> <password_of_user> | ||
| 18 | + ``` | ||
| 19 | + This is so that the program saves your login in the config.ini | ||
| 20 | + | ||
| 21 | + <hr/> | ||
| 22 | + | ||
| 23 | + And now create a new database with: | ||
| 24 | + ```bash | ||
| 25 | + python exsql.py init <database_name> | ||
| 26 | + ``` | ||
| 27 | + | ||
| 28 | + Or load the default EXSQL configuration into an already created database: | ||
| 29 | + ```bash | ||
| 30 | + python exsql.py transfer <database_name> | ||
| 31 | + ``` | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,5 @@ | |||
| 1 | + from src.psql import Psql | ||
| 2 | + | ||
| 3 | + def add_default_schema(psql: Psql): | ||
| 4 | + | ||
| 5 | + return psql.execute(f"CREATE SCHEMA exsql_meta;", shell=True) | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,100 @@ | |||
| 1 | + import typer | ||
| 2 | + from typer import Typer | ||
| 3 | + import subprocess | ||
| 4 | + import os | ||
| 5 | + from src.configmanager import ConfigManager | ||
| 6 | + from src.usepassword import use_password | ||
| 7 | + from src.psql import Psql | ||
| 8 | + from common.schemas import * | ||
| 9 | + | ||
| 10 | + if not os.path.exists('config.ini'): | ||
| 11 | + | ||
| 12 | + with open('config.ini.template', 'r') as template: | ||
| 13 | + | ||
| 14 | + with open('config.ini', 'w') as real: | ||
| 15 | + real.write(template.read()) | ||
| 16 | + | ||
| 17 | + config = ConfigManager('config.ini') | ||
| 18 | + | ||
| 19 | + app = Typer() | ||
| 20 | + | ||
| 21 | + @app.command() | ||
| 22 | + def login(u: str, p: str, s: str = 'localhost', port: int = 5432): | ||
| 23 | + ''' | ||
| 24 | + Saves your login into config.init to use in others commands | ||
| 25 | + | ||
| 26 | + Args: | ||
| 27 | + u: Server User. | ||
| 28 | + p: User password. | ||
| 29 | + s: Server (default localhost), | ||
| 30 | + port: Connection Port (default 5432) | ||
| 31 | + | ||
| 32 | + Returns: | ||
| 33 | + None | ||
| 34 | + | ||
| 35 | + Raises: | ||
| 36 | + I don't know | ||
| 37 | + ''' | ||
| 38 | + | ||
| 39 | + configs: list[tuple[str, str]] = [ | ||
| 40 | + ('user', u), | ||
| 41 | + ('password', p), | ||
| 42 | + ('server', s), | ||
| 43 | + ('port', str(port)) | ||
| 44 | + ] | ||
| 45 | + | ||
| 46 | + for values in configs: | ||
| 47 | + config.set('login', *values) | ||
| 48 | + | ||
| 49 | + config.save() | ||
| 50 | + | ||
| 51 | + @app.command() | ||
| 52 | + @use_password(config) | ||
| 53 | + def init(database_name: str): | ||
| 54 | + ''' | ||
| 55 | + Create a new database with the base configuration needed for exsql | ||
| 56 | + | ||
| 57 | + Args: | ||
| 58 | + database_name: Name of the new database. | ||
| 59 | + | ||
| 60 | + Returns: | ||
| 61 | + None | ||
| 62 | + | ||
| 63 | + Raises: | ||
| 64 | + I don't know | ||
| 65 | + ''' | ||
| 66 | + | ||
| 67 | + psql = Psql(config_file=config) | ||
| 68 | + | ||
| 69 | + create_result = psql.execute(f"CREATE DATABASE {database_name};", shell=True) | ||
| 70 | + | ||
| 71 | + psql.move(database_name) | ||
| 72 | + | ||
| 73 | + schema_result = add_default_schema(psql) | ||
| 74 | + | ||
| 75 | + print(create_result, schema_result) | ||
| 76 | + | ||
| 77 | + @app.command() | ||
| 78 | + @use_password(config) | ||
| 79 | + def transfer(database_name: str): | ||
| 80 | + ''' | ||
| 81 | + Adds base configuration to an already created database | ||
| 82 | + | ||
| 83 | + Args: | ||
| 84 | + database_name: Name of the database. | ||
| 85 | + | ||
| 86 | + Returns: | ||
| 87 | + None | ||
| 88 | + | ||
| 89 | + Raises: | ||
| 90 | + I don't know | ||
| 91 | + ''' | ||
| 92 | + | ||
| 93 | + psql = Psql(config_file=config, database=database_name) | ||
| 94 | + | ||
| 95 | + schema_result = add_default_schema(psql) | ||
| 96 | + | ||
| 97 | + print(schema_result) | ||
| 98 | + | ||
| 99 | + if __name__ == '__main__': | ||
| 100 | + app() | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments