Commit da1f8aca authored by 崔为之's avatar 崔为之 💪🏽

Update project

parent 4f9e6b48
......@@ -2,13 +2,14 @@ System:
Env: public
Database:
Type: mysql
Driver: pymysql
Username: root
Type: postgresql
Driver: psycopg2
Username: postgres
Password: localhost123
Host: localhost
Port: 3306
Port: 5432
DB: elp
TableName: user
Elasticsearch:
Host: 172.28.5.39
......@@ -39,6 +40,6 @@ Redis:
DB: 13
Scheduler:
Start: 2023-11-11 15:34:00
Start: 2023-11-11 18:20:00
End: 2099-11-11 16:00:00
Timezone: Asia/Shanghai
......@@ -12,6 +12,7 @@
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import text
from application.utils import DatabaseUri
......@@ -39,4 +40,15 @@ def init_database(app: Flask) -> None:
db.app = app
db.init_app(app)
with app.app_context():
db.create_all()
db.session.execute(text("""
CREATE TABLE IF NOT EXISTS users (
id SERIAL NOT NULL,
username VARCHAR(80) NOT NULL,
email VARCHAR(120) NOT NULL,
password VARCHAR(255) NOT NULL,
active BOOLEAN,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
PRIMARY KEY (id, created_at)
) PARTITION BY RANGE (created_at);
"""))
db.session.commit()
......@@ -10,6 +10,7 @@
# @Description :
"""
import datetime
from application.extensions.init_sqlalchemy import db
from application.models import User
......@@ -22,7 +23,7 @@ def task():
"""
with db.app.app_context():
print("create user")
user = User(username="CWZ", email="Stu@outlook.com", password="qwe!2345", active=True)
db.session.add(user)
db.session.commit()
user = User(username="CWzz", email="Stuu@outlook.com", password="qwe!2345", active=True,
created_at=datetime.datetime.utcnow())
user.save()
print("created user admin")
......@@ -10,6 +10,8 @@
# @Description :
"""
from datetime import datetime
from sqlalchemy import text
from sqlalchemy.ext.hybrid import hybrid_property
from application.extensions.init_bcrypt import bcrypt
......@@ -18,12 +20,14 @@ from application.extensions.init_sqlalchemy import db
class User(db.Model):
"""Basic user model"""
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(80), unique=True, nullable=False)
_password = db.Column("password", db.String(255), nullable=False)
active = db.Column(db.Boolean, default=True)
created_at = db.Column(db.DateTime, nullable=False)
@hybrid_property
def password(self):
......@@ -47,3 +51,17 @@ class User(db.Model):
def __repr__(self) -> str:
return f'<User {self.username}>'
def save(self):
partition_date = self.created_at.strftime('%Y_%m')
partition_name = f'users_{partition_date}'
with db.session.begin_nested():
db.session.execute(text(f"""
CREATE TABLE IF NOT EXISTS {partition_name} PARTITION OF users
FOR VALUES FROM ('{self.created_at.strftime('%Y-%m-01')}') TO
('{self.created_at.strftime('%Y-%m-01')}'::date + interval '1 month');
"""))
db.session.add(self)
db.session.commit()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment