Skip to content

Commit ee10a9a

Browse files
committed
Add mysql and pgsql database support
1 parent 2df0517 commit ee10a9a

File tree

8 files changed

+26
-15
lines changed

8 files changed

+26
-15
lines changed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ WORKDIR /app
55

66
COPY . .
77

8-
RUN apk add build-base libffi-dev
8+
RUN apk add build-base libffi-dev postgresql-dev
99

1010
RUN \
1111
cd /app && \

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,14 @@ The recommended way of running is to pull the image from [Docker Hub](https://hu
5858
|---|---|
5959
| /app/config | Used to store DB and environment variables. This is not needed if you pass in all of the above environment variables. |
6060

61+
#### Database setup
62+
**MySQL**
63+
Set DATABASE_URI connect string as `mysql+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4`
64+
65+
66+
**PostgreSQL**
67+
Set DATABASE_URI connect string as `postgresql+psycopg2://user:pass@host/dbname?client_encoding=utf8`
68+
6169

6270
#### Docker Run
6371
By default, the easiest way to get running is:

app/models.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ class Meta(db.Model):
6262
uuid = db.Column(GUID, primary_key=True, index=True, unique=True, default=lambda: uuid.uuid4())
6363
user_id = db.Column(GUID, db.ForeignKey('user.uuid'), nullable=False)
6464
note_id = db.Column(GUID, db.ForeignKey('note.uuid'), nullable=False)
65-
name_encrypted = db.Column('name', db.String)
66-
name_compare = db.Column(db.String)
67-
kind = db.Column(db.String)
65+
name_encrypted = db.Column('name', db.String(128))
66+
name_compare = db.Column(db.String(512))
67+
kind = db.Column(db.String(128))
6868

6969
@hybrid_property
7070
def name(self):
@@ -90,7 +90,7 @@ def serialize(self):
9090
class Note(db.Model):
9191
uuid = db.Column(GUID, primary_key=True, index=True, unique=True, default=lambda: uuid.uuid4())
9292
user_id = db.Column(GUID, db.ForeignKey('user.uuid'), nullable=False)
93-
data = db.Column(db.String)
93+
data = db.Column(db.Text())
9494
title = db.Column(db.String(128), nullable=False)
9595
date = db.Column(db.DateTime(timezone=True), server_default=func.now())
9696
is_date = db.Column(db.Boolean, default=False)

docker-compose.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ services:
1010
- ./dailynotes-volume:/app/config
1111
environment:
1212
API_SECRET_KEY: CHANGE_THIS_WITH_SECURE_PASSWORD
13-
DB_ENCRYPTION_KEY: CHANGE_THIS_WITH_SECURE_PASSWORD
13+
DB_ENCRYPTION_KEY: CHANGE_THIS_WITH_SECURE_PASSWORD
14+
DATABASE_URI: CHANGE_THIS_WITH_YOUR_DATABASE_URL, OR REMOVE IT IF YOU USE SQLITE

migrations/versions/7bd1ee1840ca_meta_table.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ def upgrade():
2323
sa.Column('uuid', app.model_types.GUID(), nullable=False),
2424
sa.Column('user_id', app.model_types.GUID(), nullable=False),
2525
sa.Column('note_id', app.model_types.GUID(), nullable=False),
26-
sa.Column('name', sa.String(), nullable=True),
27-
sa.Column('name_compare', sa.String(), nullable=True),
28-
sa.Column('kind', sa.String(), nullable=True),
26+
sa.Column('name', sa.String(128), nullable=True),
27+
sa.Column('name_compare', sa.String(512), nullable=True),
28+
sa.Column('kind', sa.String(128), nullable=True),
2929
sa.ForeignKeyConstraint(['note_id'], ['note.uuid'], ),
3030
sa.ForeignKeyConstraint(['user_id'], ['user.uuid'], ),
3131
sa.PrimaryKeyConstraint('uuid')

migrations/versions/9ca5901af374_cleanup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def upgrade():
2929
def downgrade():
3030
# ### commands auto generated by Alembic - please adjust! ###
3131
with op.batch_alter_table('note', schema=None) as batch_op:
32-
batch_op.add_column(sa.Column('tags', sa.VARCHAR(), nullable=True))
33-
batch_op.add_column(sa.Column('projects', sa.VARCHAR(), nullable=True))
32+
batch_op.add_column(sa.Column('tags', sa.VARCHAR(128), nullable=True))
33+
batch_op.add_column(sa.Column('projects', sa.VARCHAR(128), nullable=True))
3434

3535
# ### end Alembic commands ###

migrations/versions/a477f34dbaa4_initial_config.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ def upgrade():
2929
op.create_index(op.f('ix_user_uuid'), 'user', ['uuid'], unique=True)
3030
op.create_table('note',
3131
sa.Column('uuid', app.model_types.GUID(), nullable=False),
32-
sa.Column('tags', sa.String(), nullable=True),
33-
sa.Column('projects', sa.String(), nullable=True),
32+
sa.Column('tags', sa.String(128), nullable=True),
33+
sa.Column('projects', sa.String(128), nullable=True),
3434
sa.Column('user_id', app.model_types.GUID(), nullable=False),
35-
sa.Column('data', sa.String(), nullable=True),
35+
sa.Column('data', sa.Text(), nullable=True),
3636
sa.Column('title', sa.String(length=128), nullable=False),
3737
sa.Column('date', sa.DateTime(timezone=True), server_default=sa.text(u'(CURRENT_TIMESTAMP)'), nullable=True),
3838
sa.Column('is_date', sa.Boolean(), nullable=True),

requirements.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@ flask-migrate
44
flask-jwt-extended
55
flask-argon2
66
python-frontmatter
7-
pycrypto
7+
pycrypto
8+
PyMySQL
9+
psycopg2-binary

0 commit comments

Comments
 (0)