| 928 | name = db.Column(db.String, primary_key=True) |
| 929 | |
| 930 | |
| 931 | class ApiKey(db.Model, Versioned): |
| 932 | __tablename__ = "api_keys" |
| 933 | |
| 934 | id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) |
| 935 | name = db.Column(db.String(255), nullable=False) |
| 936 | _secret = db.Column("secret", db.String(255), unique=True, nullable=False) |
| 937 | service_id = db.Column(UUID(as_uuid=True), db.ForeignKey("services.id"), index=True, nullable=False) |
| 938 | service = db.relationship("Service", backref="api_keys") |
| 939 | key_type = db.Column(db.String(255), db.ForeignKey("key_types.name"), nullable=False) |
| 940 | expiry_date = db.Column(db.DateTime) |
| 941 | created_at = db.Column(db.DateTime, index=False, unique=False, nullable=False, default=datetime.datetime.utcnow) |
| 942 | updated_at = db.Column(db.DateTime, index=False, unique=False, nullable=True, onupdate=datetime.datetime.utcnow) |
| 943 | created_by = db.relationship("User") |
| 944 | created_by_id = db.Column(UUID(as_uuid=True), db.ForeignKey("users.id"), index=True, nullable=False) |
| 945 | |
| 946 | __table_args__ = ( |
| 947 | Index("uix_service_to_key_name", "service_id", "name", unique=True, postgresql_where=expiry_date.is_(None)), |
| 948 | ) |
| 949 | |
| 950 | __extended_statistics__ = ( |
| 951 | # dependencies |
| 952 | ("st_dep_api_keys_service_id_created_by_id", ("service_id", "created_by_id"), ("dependencies",)), |
| 953 | ) |
| 954 | |
| 955 | @property |
| 956 | def secret(self): |
| 957 | if self._secret: |
| 958 | return signing.decode(self._secret) |
| 959 | return None |
| 960 | |
| 961 | @secret.setter |
| 962 | def secret(self, secret): |
| 963 | if secret: |
| 964 | self._secret = signing.encode(str(secret)) |
| 965 | |
| 966 |
no outgoing calls