postgres default fix

This commit is contained in:
user 2025-08-23 13:15:10 +03:00
parent b28e561a5f
commit 82758fb11a
12 changed files with 42 additions and 37 deletions

View File

@ -8,7 +8,7 @@ class ServiceConfigValue(AlchemyBase):
id = Column(Integer, autoincrement=True, primary_key=True)
key = Column(String(128), nullable=False, unique=True)
packed_value = Column(JSON, nullable=False, default={})
packed_value = Column(JSON, nullable=False, default=dict)
@property
def value(self):

View File

@ -1,5 +1,6 @@
from sqlalchemy import Column, Integer, String, DateTime, JSON, Boolean
from sqlalchemy.orm import relationship
from datetime import datetime
from app.core._defaults import DEFAULT_ASSET_INITOBJ
from app.core.models.base import AlchemyBase
@ -15,10 +16,10 @@ class Asset(AlchemyBase):
network = Column(String(32), nullable=True)
address = Column(String(1024), nullable=True)
meta = Column(JSON, nullable=False, default={})
rates = Column(JSON, nullable=False, default={})
meta = Column(JSON, nullable=False, default=dict)
rates = Column(JSON, nullable=False, default=dict)
created = Column(DateTime, nullable=False, default=0)
created = Column(DateTime, nullable=False, default=datetime.utcnow)
is_active = Column(Boolean, nullable=False, default=True)
balances = relationship('UserBalance', back_populates='asset')

View File

@ -3,6 +3,7 @@ from sqlalchemy import Column, BigInteger, Integer, String, ForeignKey, DateTime
from sqlalchemy.orm import relationship
from app.core.models.base import AlchemyBase
from app.core.models.content.indexation_mixins import UserContentIndexationMixin
from datetime import datetime
class UserContent(AlchemyBase, UserContentIndexationMixin):
@ -14,12 +15,12 @@ class UserContent(AlchemyBase, UserContentIndexationMixin):
owner_address = Column(String(1024), nullable=True)
code_hash = Column(String(128), nullable=True)
data_hash = Column(String(128), nullable=True)
updated = Column(DateTime, nullable=False, default=0)
updated = Column(DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)
content_id = Column(Integer, ForeignKey('node_storage.id'), nullable=True)
created = Column(DateTime, nullable=False, default=0)
created = Column(DateTime, nullable=False, default=datetime.utcnow)
meta = Column(JSON, nullable=False, default={})
meta = Column(JSON, nullable=False, default=dict)
user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
wallet_connection_id = Column(Integer, ForeignKey('wallet_connections.id'), nullable=True)
status = Column(String(64), nullable=False, default='active') # 'transaction_requested'
@ -41,9 +42,8 @@ class UserAction(AlchemyBase):
to_address = Column(String(1024), nullable=True)
from_address = Column(String(1024), nullable=True)
status = Column(String(128), nullable=True)
meta = Column(JSON, nullable=False, default={})
created = Column(DateTime, nullable=False, default=0)
meta = Column(JSON, nullable=False, default=dict)
created = Column(DateTime, nullable=False, default=datetime.utcnow)
user = relationship('User', uselist=False, foreign_keys=[user_id])
content = relationship('StoredContent', uselist=False, foreign_keys=[content_id])

View File

@ -1,5 +1,6 @@
from base58 import b58decode
from sqlalchemy import Column, Integer, String, DateTime, JSON
from datetime import datetime
from .base import AlchemyBase
@ -15,12 +16,12 @@ class KnownKey(AlchemyBase):
public_key_hash = Column(String(64), nullable=False, unique=True) # base58
algo = Column(String(32), nullable=True, default=None)
meta = Column(JSON, nullable=False, default={})
meta = Column(JSON, nullable=False, default=dict)
# {
# "I_user_id": TRUSTED_USER_ID,
# }
created = Column(DateTime, nullable=False, default=0)
created = Column(DateTime, nullable=False, default=datetime.utcnow)
# stored_content = relationship('StoredContent', back_populates='key')

View File

@ -12,9 +12,9 @@ class KnownNode(AlchemyBase):
public_key = Column(String(256), nullable=False)
codebase_hash = Column(String(512), nullable=True) # Node software version
reputation = Column(Integer, nullable=False, default=0)
last_sync = Column(DateTime, nullable=False, default=datetime.now)
meta = Column(JSON, nullable=False, default={})
located_at = Column(DateTime, nullable=False, default=datetime.now)
last_sync = Column(DateTime, nullable=False, default=datetime.utcnow)
meta = Column(JSON, nullable=False, default=dict)
located_at = Column(DateTime, nullable=False, default=datetime.utcnow)
class KnownNodeIncident(AlchemyBase):
@ -28,7 +28,7 @@ class KnownNodeIncident(AlchemyBase):
severity = Column(Integer, nullable=False, default=1) # Severity level (1-low to 5-critical)
resolved = Column(Boolean, nullable=False, default=False) # Whether the incident has been resolved
resolved_at = Column(DateTime, nullable=True) # Timestamp when the incident was resolved
meta = Column(JSON, nullable=False, default={}) # Additional metadata if needed
meta = Column(JSON, nullable=False, default=dict) # Additional metadata if needed
class RemoteContentIndex(AlchemyBase):
@ -41,7 +41,6 @@ class RemoteContentIndex(AlchemyBase):
decrypted_hash = Column(String(128), nullable=True) # Decrypted content hash, available once permission is granted
ton_address = Column(String(128), nullable=True) # TON network address for the content
onchain_index = Column(Integer, nullable=True) # Onchain index or reference on a blockchain
meta = Column(JSON, nullable=False, default={}) # Additional metadata for flexible content description
meta = Column(JSON, nullable=False, default=dict) # Additional metadata for flexible content description
last_updated = Column(DateTime, nullable=False, default=datetime.utcnow) # Timestamp of the last update
created_at = Column(DateTime, nullable=False, default=datetime.utcnow) # Record creation timestamp

View File

@ -25,7 +25,8 @@ class StoredContent(AlchemyBase, AudioContentMixin):
status = Column(String(32), nullable=True)
filename = Column(String(1024), nullable=False)
meta = Column(JSON, nullable=False, default={})
# Use a factory for JSON default to avoid shared mutable dict
meta = Column(JSON, nullable=False, default=dict)
user_id = Column(Integer, ForeignKey('users.id'), nullable=True)
owner_address = Column(String(1024), nullable=True)
@ -35,9 +36,11 @@ class StoredContent(AlchemyBase, AudioContentMixin):
telegram_cid = Column(String(1024), nullable=True)
codebase_version = Column(Integer, nullable=True)
created = Column(DateTime, nullable=False, default=0)
updated = Column(DateTime, nullable=False, default=0)
disabled = Column(DateTime, nullable=False, default=0)
# Use proper datetime defaults; updated also auto-updates on change
created = Column(DateTime, nullable=False, default=datetime.utcnow)
updated = Column(DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)
# Timestamp of when content was disabled; None means active
disabled = Column(DateTime, nullable=True, default=None)
disabled_by = Column(Integer, ForeignKey('users.id'), nullable=True, default=None)
encrypted = Column(Boolean, nullable=False, default=False)

View File

@ -13,4 +13,4 @@ class PromoAction(AlchemyBase):
action_type = Column(String(64), nullable=False) # Type of action, e.g., 'referral', 'discount'
action_ref = Column(String(512), nullable=False) # Reference to the action, e.g., promo code
created = Column(DateTime, nullable=False, default=datetime.now)
created = Column(DateTime, nullable=False, default=datetime.utcnow)

View File

@ -15,11 +15,11 @@ class BlockchainTask(AlchemyBase):
epoch = Column(Integer, nullable=True)
seqno = Column(Integer, nullable=True)
created = Column(DateTime, nullable=False, default=datetime.now)
updated = Column(DateTime, nullable=False, default=datetime.now)
created = Column(DateTime, nullable=False, default=datetime.utcnow)
updated = Column(DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)
user_id = Column(Integer, ForeignKey('users.id'), nullable=True)
meta = Column(JSON, nullable=False, default={})
meta = Column(JSON, nullable=False, default=dict)
status = Column(String(256), nullable=False)
transaction_hash = Column(String(1024), nullable=True)

View File

@ -13,8 +13,8 @@ class UserBalance(AlchemyBase):
asset_id = Column(Integer, ForeignKey('assets.id'), nullable=False)
balance = Column(Float, nullable=False, default=0)
updated = Column(DateTime, nullable=False, default=0)
created = Column(DateTime, nullable=False, default=0)
updated = Column(DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)
created = Column(DateTime, nullable=False, default=datetime.utcnow)
user = relationship('User', uselist=False, foreign_keys=[user_id], back_populates='balances')
asset = relationship('Asset', uselist=False, foreign_keys=[asset_id], back_populates='balances')
@ -32,7 +32,7 @@ class InternalTransaction(AlchemyBase):
spent_transaction_id = Column(Integer, ForeignKey('internal_transactions.id'), nullable=True)
type = Column(String(256), nullable=False, default="NOT_SPECIFIED")
created = Column(DateTime, nullable=False, default=0)
created = Column(DateTime, nullable=False, default=datetime.utcnow)
user = relationship('User', uselist=False, back_populates='internal_transactions', foreign_keys=[user_id])
asset = relationship('Asset', uselist=False, foreign_keys=[asset_id])

View File

@ -18,7 +18,7 @@ class User(AlchemyBase, DisplayMixin, TranslationCore, AuthenticationMixin_V1, W
username = Column(String(512), nullable=True)
lang_code = Column(String(8), nullable=False, default="en")
meta = Column(JSON, nullable=False, default={})
meta = Column(JSON, nullable=False, default=dict)
last_use = Column(DateTime, nullable=False, default=datetime.utcnow)
updated = Column(DateTime, nullable=False, default=datetime.utcnow)
@ -32,4 +32,3 @@ class User(AlchemyBase, DisplayMixin, TranslationCore, AuthenticationMixin_V1, W
def __str__(self):
return f"User, {self.id}_{self.telegram_id} | Username: {self.username} " + '\\'

View File

@ -2,6 +2,7 @@
from sqlalchemy import Column, BigInteger, Integer, String, ForeignKey, DateTime, JSON, Boolean
from sqlalchemy.orm import relationship
from .base import AlchemyBase
from datetime import datetime
class UserActivity(AlchemyBase):
@ -9,10 +10,10 @@ class UserActivity(AlchemyBase):
id = Column(Integer, autoincrement=True, primary_key=True)
type = Column(String(64), nullable=False)
meta = Column(JSON, nullable=False, default={})
meta = Column(JSON, nullable=False, default=dict)
user_id = Column(Integer, ForeignKey('users.id'), nullable=True)
user_ip = Column(String(64), nullable=True)
created = Column(DateTime, nullable=False, default=0)
created = Column(DateTime, nullable=False, default=datetime.utcnow)
user = relationship('User', uselist=False, foreign_keys=[user_id])

View File

@ -1,5 +1,6 @@
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, JSON, Boolean
from sqlalchemy.orm import relationship
from datetime import datetime
from .base import AlchemyBase
@ -15,11 +16,11 @@ class WalletConnection(AlchemyBase):
wallet_address = Column(String(1024), nullable=False)
keys = Column(JSON, nullable=False, default={})
meta = Column(JSON, nullable=False, default={})
keys = Column(JSON, nullable=False, default=dict)
meta = Column(JSON, nullable=False, default=dict)
created = Column(DateTime, nullable=False, default=0)
updated = Column(DateTime, nullable=False, default=0)
created = Column(DateTime, nullable=False, default=datetime.utcnow)
updated = Column(DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)
invalidated = Column(Boolean, nullable=False, default=True)
without_pk = Column(Boolean, nullable=False, default=False)