Coding
PromptBeginner5 minmarkdown
Markdown Converter
Agent skill for markdown-converter
23
- Simple python template I am experimenting with around a set of overlapping concepts with a Fastapi implementation, primarily:
Sign in to like and favorite skills
#[sql .]De[sql .]ign[sql .]and[sql .]Princip[sql .]e[sql .]
-[sql .]Simp[sql .]e[sql .]python[sql .]temp[sql .]ate[sql .]I[sql .]am[sql .]experimenting[sql .]with[sql .]around[sql .]a[sql .][sql .]et[sql .]of[sql .]over[sql .]apping[sql .]concept[sql .][sql .]with[sql .]a[sql .]Fa[sql .]tapi[sql .]imp[sql .]ementation,[sql .]primari[sql .]y:
[sql .][sql .]-[sql .]Vertica[sql .][sql .]S[sql .]ice
[sql .][sql .]-[sql .]With[sql .]e[sql .]ement[sql .][sql .]of:
[sql .][sql .][sql .][sql .]-[sql .]Domain[sql .]Driven[sql .]De[sql .]ign[sql .](DDD)
[sql .][sql .][sql .][sql .]-[sql .]C[sql .]ean[sql .]Architecture
[sql .][sql .][sql .][sql .]-[sql .]Port[sql .][sql .]&[sql .]Adapter[sql .]
[sql .][sql .][sql .][sql .]-[sql .]CQRS
##[sql .]Pair[sql .]Programming[sql .]Ru[sql .]e[sql .]
-[sql .]do[sql .]not[sql .]make[sql .]git[sql .]commit[sql .]
-[sql .]pair[sql .]program[sql .]with[sql .]the[sql .]human[sql .]deve[sql .]oper[sql .]with[sql .]<http[sql .]://github[sql .]com/remotemobprogramming/mob>[sql .]framework
-[sql .]human[sql .]deve[sql .]oper[sql .]wi[sql .][sql .][sql .]the[sql .]on[sql .]y[sql .]one[sql .]who[sql .]execute[sql .][sql .]`mob[sql .]done`
-[sql .]agent[sql .]wi[sql .][sql .][sql .]execute[sql .]`mob[sql .][sql .]tart`[sql .]when[sql .]coding[sql .][sql .]tart[sql .]
-[sql .]agent[sql .]wi[sql .][sql .][sql .]execute[sql .]`mob[sql .]next`[sql .]when[sql .]coding[sql .]i[sql .][sql .]comp[sql .]ete[sql .]and[sql .]ready[sql .]for[sql .]review
##[sql .]Core[sql .]Sy[sql .]tem[sql .]Component[sql .]
-[sql .]The[sql .]main[sql .]app[sql .]ication[sql .][sql .]ogic[sql .]i[sql .][sql .]in[sql .]app[sql .]
-[sql .]Feature[sql .]f[sql .]ag[sql .][sql .]and[sql .]configuration[sql .][sql .]etting[sql .][sql .]are[sql .]in[sql .]config[sql .]py[sql .]
##[sql .]Code[sql .][sql .]ty[sql .]e[sql .]
-[sql .]U[sql .]e[sql .]PEP[sql .]8[sql .]and[sql .]pythonic[sql .]code
-[sql .]U[sql .]e[sql .]type[sql .]hint[sql .]
-[sql .]Function[sql .]:[sql .]U[sql .]e[sql .]`[sql .]nake_ca[sql .]e`
-[sql .]Variab[sql .]e[sql .]:[sql .]U[sql .]e[sql .]`[sql .]nake_ca[sql .]e`
-[sql .]Con[sql .]tant[sql .]:[sql .]U[sql .]e[sql .]`UPPER_CASE`
-[sql .]C[sql .]a[sql .][sql .]e[sql .]:[sql .]U[sql .]e[sql .]`Came[sql .]Ca[sql .]e`
-[sql .]U[sql .]e[sql .]`uv`[sql .]for[sql .]dependency[sql .]management
-[sql .]U[sql .]e[sql .]`pyenv`[sql .]for[sql .]python[sql .]ver[sql .]ion[sql .]management
-[sql .]U[sql .]e[sql .]`[sql .]oguru`[sql .]for[sql .][sql .]ogging
-[sql .]U[sql .]e[sql .]`pydantic`[sql .]for[sql .]data[sql .]va[sql .]idation
-[sql .]U[sql .]e[sql .]`[sql .][sql .][sql .]mode[sql .]`[sql .]for[sql .]databa[sql .]e[sql .]interaction[sql .]
-[sql .]U[sql .]e[sql .]`pydantic-[sql .]etting[sql .]`[sql .]for[sql .]configuration
-[sql .]U[sql .]e[sql .]`python-dotenv`[sql .]for[sql .]environment[sql .]variab[sql .]e[sql .]
-[sql .]U[sql .]e[sql .]`pyte[sql .]t`[sql .]for[sql .]te[sql .]ting
-[sql .]U[sql .]e[sql .]`pyte[sql .]t-cov`[sql .]for[sql .]coverage
##[sql .]Data[sql .]&[sql .]Storage
-[sql .]Support[sql .]for[sql .]S[sql .][sql .]ite[sql .]and[sql .]Po[sql .]tgre[sql .][sql .]via[sql .][sql .][sql .][sql .]mode[sql .][sql .]
-[sql .]U[sql .]e[sql .]`at[sql .]a[sql .]`[sql .]for[sql .]databa[sql .]e[sql .]migration[sql .]
-[sql .]U[sql .]e[sql .]`migration[sql .]`[sql .]directory[sql .]for[sql .]migration[sql .]fi[sql .]e[sql .]
-[sql .]U[sql .]e[sql .]Byteba[sql .]e[sql .]and[sql .]Supaba[sql .]e[sql .][sql .]ty[sql .]e[sql .]guide[sql .]
-[sql .]Identifier[sql .]Sty[sql .]e:[sql .][sql .]nake_ca[sql .]e,[sql .][sql .]owerca[sql .]e,[sql .]de[sql .]criptive
-[sql .]Tab[sql .]e[sql .]Name[sql .]:[sql .][sql .]nake_ca[sql .]e,[sql .]p[sql .]ura[sql .],[sql .]no[sql .]prefixe[sql .],[sql .]de[sql .]criptive
-[sql .]Co[sql .]umn[sql .]Name[sql .]:[sql .][sql .]nake_ca[sql .]e,[sql .][sql .]ingu[sql .]ar,[sql .]de[sql .]criptive,[sql .]avoid[sql .]generic,[sql .]with[sql .]`_id`
-[sql .]Data[sql .]Type[sql .]:[sql .]Prefer[sql .][sql .]pecific[sql .]type[sql .],[sql .]ENUM[sql .]for[sql .][sql .]ma[sql .][sql .][sql .][sql .]et[sql .],[sql .]avoid[sql .]CHAR(n)
-[sql .]Query[sql .]Formatting:[sql .]Lowerca[sql .]e[sql .]keyword[sql .],[sql .]white[sql .]pace,[sql .]c[sql .]ear[sql .]indentation
-[sql .]Function[sql .]:[sql .]Lowerca[sql .]e,[sql .][sql .]nake_ca[sql .]e
-[sql .]Con[sql .]traint[sql .]:[sql .]Exp[sql .]icit,[sql .]de[sql .]criptive[sql .]name[sql .]
##[sql .]Te[sql .]ting[sql .]&[sql .]Debugging
-[sql .]Unit,[sql .]component[sql .]and[sql .]integration[sql .]te[sql .]t[sql .][sql .]in[sql .]app/te[sql .]t[sql .]
-[sql .]Create[sql .]unit[sql .]and[sql .]component[sql .]te[sql .]t[sql .][sql .]fir[sql .]t[sql .]before[sql .]writing[sql .]the[sql .]actua[sql .][sql .]code
-[sql .]Fo[sql .][sql .]ow[sql .]code[sql .]imp[sql .]ementation[sql .]with[sql .]integration[sql .]te[sql .]t[sql .]
##[sql .]Workf[sql .]ow[sql .]and[sql .]deve[sql .]oper[sql .]interaction
-[sql .]TBD
##[sql .]Ba[sql .]h[sql .]command[sql .]
-[sql .]Running[sql .]api[sql .][sql .]erver:
```ba[sql .]h
uv[sql .]run[sql .]fa[sql .]tapi[sql .]dev[sql .]main[sql .]py
```
-[sql .]Running[sql .]te[sql .]t[sql .]:
```ba[sql .]h
uv[sql .]run[sql .]pyte[sql .]t
```
-[sql .]Running[sql .]databa[sql .]e[sql .]and[sql .]migration[sql .]:
```ba[sql .]h
docker[sql .]compo[sql .]e[sql .]up
docker[sql .]compo[sql .]e[sql .]down[sql .]-v
```
-[sql .]Variou[sql .][sql .]migration[sql .]command[sql .][sql .]depending[sql .]on[sql .]databa[sql .]e[sql .]type:
```ba[sql .]h
at[sql .]a[sql .][sql .][sql .]chema[sql .]in[sql .]pect[sql .]-u[sql .]"[sql .][sql .][sql .]ite://fi[sql .]e?cache=[sql .]hared&mode=memory"[sql .]--format[sql .]"{{[sql .][sql .][sql .][sql .][sql .][sql .][sql .]}}"
at[sql .]a[sql .][sql .][sql .]chema[sql .]in[sql .]pect[sql .]-u[sql .]"[sql .][sql .][sql .]ite://i[sql .][sql .]ue[sql .][sql .]db"[sql .]--format[sql .]"{{[sql .][sql .][sql .][sql .][sql .][sql .][sql .]}}"[sql .]>[sql .]migrate[sql .][sql .][sql .][sql .]
at[sql .]a[sql .][sql .][sql .]chema[sql .]in[sql .]pect[sql .]-u[sql .]"po[sql .]tgre[sql .]://app_u[sql .]er:change_thi[sql .]_pa[sql .][sql .]word@[sql .]oca[sql .]ho[sql .]t:5432/app_databa[sql .]e?[sql .][sql .][sql .]mode=di[sql .]ab[sql .]e"[sql .]--[sql .]chema[sql .]"i[sql .][sql .]ue_ana[sql .]y[sql .]i[sql .]"[sql .]--format[sql .]"{{[sql .][sql .][sql .][sql .][sql .][sql .][sql .]}}"
at[sql .]a[sql .][sql .][sql .]chema[sql .]app[sql .]y[sql .]--ur[sql .][sql .]"[sql .][sql .][sql .]ite://i[sql .][sql .]ue[sql .][sql .]db"[sql .]--to[sql .]"fi[sql .]e://migrate[sql .][sql .][sql .][sql .]"[sql .]--dev-ur[sql .][sql .]"[sql .][sql .][sql .]ite://fi[sql .]e?mode=memory"[sql .]--dry-run
at[sql .]a[sql .][sql .][sql .]chema[sql .]app[sql .]y[sql .]--ur[sql .][sql .]"[sql .][sql .][sql .]ite://i[sql .][sql .]ue[sql .][sql .]db"[sql .]--to[sql .]"fi[sql .]e://migrate[sql .][sql .][sql .][sql .]"[sql .]--dev-ur[sql .][sql .]"[sql .][sql .][sql .]ite://fi[sql .]e?mode=memory"
at[sql .]a[sql .][sql .][sql .]chema[sql .]app[sql .]y[sql .]--ur[sql .][sql .]"po[sql .]tgre[sql .]://app_u[sql .]er:change_thi[sql .]_pa[sql .][sql .]word@[sql .]oca[sql .]ho[sql .]t:5432/app_databa[sql .]e?[sql .][sql .][sql .]mode=di[sql .]ab[sql .]e"[sql .]--to[sql .]"fi[sql .]e://[sql .]/migration[sql .]/migrate[sql .][sql .][sql .][sql .]"[sql .]--dev-ur[sql .][sql .]"docker://po[sql .]tgre[sql .]/17"[sql .]--dry-run
at[sql .]a[sql .][sql .][sql .]chema[sql .]app[sql .]y[sql .]--ur[sql .][sql .]"po[sql .]tgre[sql .]://app_u[sql .]er:change_thi[sql .]_pa[sql .][sql .]word@[sql .]oca[sql .]ho[sql .]t:5432/app_databa[sql .]e?[sql .][sql .][sql .]mode=di[sql .]ab[sql .]e"[sql .]--to[sql .]"fi[sql .]e://[sql .]/migration[sql .]/migrate[sql .][sql .][sql .][sql .]"[sql .]--dev-ur[sql .][sql .]"docker://po[sql .]tgre[sql .]/17"
```
mob donemob start when coding startsmob next when coding is complete and ready for reviewsnake_casesnake_caseUPPER_CASECamelCaseuv for dependency managementpyenv for python version managementloguru for loggingpydantic for data validationsqlmodel for database interactionspydantic-settings for configurationpython-dotenv for environment variablespytest for testingpytest-cov for coverageatlas for database migrationsmigrations directory for migration files_iduv run fastapi dev main.py
uv run pytest
docker compose up docker compose down -v
atlas schema inspect -u "sqlite://file?cache=shared&mode=memory" --format "{{ sql . }}" atlas schema inspect -u "sqlite://issues.db" --format "{{ sql . }}" > migrate.sql atlas schema inspect -u "postgres://app_user:change_this_password@localhost:5432/app_database?sslmode=disable" --schema "issue_analysis" --format "{{ sql . }}" atlas schema apply --url "sqlite://issues.db" --to "file://migrate.sql" --dev-url "sqlite://file?mode=memory" --dry-run atlas schema apply --url "sqlite://issues.db" --to "file://migrate.sql" --dev-url "sqlite://file?mode=memory" atlas schema apply --url "postgres://app_user:change_this_password@localhost:5432/app_database?sslmode=disable" --to "file://./migrations/migrate.sql" --dev-url "docker://postgres/17" --dry-run atlas schema apply --url "postgres://app_user:change_this_password@localhost:5432/app_database?sslmode=disable" --to "file://./migrations/migrate.sql" --dev-url "docker://postgres/17"