Skip to content

Commit bc28e21

Browse files
committed
VFv0.7
1 parent fef897d commit bc28e21

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+2839
-2010
lines changed

core/_dbops_/models/siddhis.py

Lines changed: 43 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
from ..config import db
2+
from sqlalchemy.ext.mutable import MutableList
3+
from sqlalchemy import PickleType
4+
from sqlalchemy.types import JSON
5+
26

37

48
class Siddhis(db.Model):
@@ -9,59 +13,78 @@ class Siddhis(db.Model):
913
db.Integer,
1014
primary_key = True
1115
)
12-
_name_ = db.Column(
16+
name = db.Column(
1317
db.String(30),
1418
unique = True,
1519
nullable = False
1620
)
17-
_acronym_ = db.Column(
18-
db.String(30),
19-
unique = True,
21+
author = db.Column(
22+
db.String(100),
23+
unique = False,
2024
nullable = False
2125
)
22-
_category_ = db.Column(
23-
db.String(30),
26+
brief = db.Column(
27+
db.String(100),
2428
unique = True,
2529
nullable = False
2630
)
27-
_framework_ = db.Column(
31+
category = db.Column(
2832
db.String(30),
29-
unique = True,
33+
unique = False,
3034
nullable = False
3135
)
32-
_type_ = db.Column(
33-
db.String(30),
34-
unique = True,
36+
framework = db.Column(
37+
db.String(50),
38+
unique = False,
3539
nullable = False
3640
)
37-
_module_ = db.Column(
38-
db.String(30),
41+
info = db.Column(
42+
db.String(100),
3943
unique = True,
4044
nullable = False
4145
)
42-
_author_ = db.Column(
43-
db.String(30),
46+
module = db.Column(
47+
db.String(50),
4448
unique = True,
4549
nullable = False
4650
)
47-
_brief_ = db.Column(
51+
package = db.Column(
52+
db.String(50),
53+
unique = False,
54+
nullable = True
55+
)
56+
type = db.Column(
4857
db.String(30),
58+
unique = False,
59+
nullable = False
60+
)
61+
tags = db.Column(
62+
JSON,
63+
unique = False,
64+
nullable = False
65+
)
66+
description = db.Column(
67+
db.String(1000),
4968
unique = True,
5069
nullable = False
5170
)
52-
_description_ = db.Column(
53-
db.String(30),
71+
references = db.Column(
72+
JSON,
73+
unique = False,
74+
nullable = False
75+
)
76+
guide = db.Column(
77+
JSON,
5478
unique = True,
5579
nullable = False
5680
)
5781

58-
5982
def __init__(self, **kwargs):
6083
super().__init__(**kwargs)
6184

6285
def to_dict(self) -> dict:
6386
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
6487

6588
def __repr__(self):
66-
return f"Session {self.session_id} successfully created!"
89+
return f"successfully created!"
6790

core/_dbops_/vmnf_dbops.py

Lines changed: 64 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,61 @@
11
from sqlalchemy_utils.functions import database_exists as db_exists
22
from .models.sessions import VFSessions as VFS
3+
from sqlalchemy_filters import apply_filters
34
from .models.siddhis import Siddhis as VFSD
5+
from res.vmnf_banners import case_header
6+
from datetime import datetime as dt
7+
from sqlalchemy import or_, and_
8+
from sqlalchemy import func,exc,inspect
9+
from neotermcolor import cprint
410
from .config import db, app
11+
import os
512

6-
from datetime import datetime as dt
713

14+
def x():
15+
print('in x')
816

917
class VFSiddhis:
10-
def __init__(self, **vmnf_handler):
11-
self.vmnf_handler = vmnf_handler
18+
def __init__(self, **siddhi_specs:dict):
19+
self.siddhi_specs = siddhi_specs
1220

13-
def register_siddhi(self,**data):
14-
if self.get_session(data['session_id']):
15-
if self.vmnf_handler.get('debug', False):
16-
print(f"[{dt.now()}] Session {data['session_id']} already exists!")
17-
return False
21+
def commit(self,entry):
22+
db.session.add(entry)
23+
db.session.commit()
24+
25+
def register_siddhi(self):
26+
if not inspect(db.engine).has_table("_SIDDHIS_"):
27+
self.create_siddhi_tbl()
28+
29+
self.commit(VFSD(**self.siddhi_specs))
30+
31+
def handle_OpErr(self, exception):
32+
if (str(exception.orig)).startswith('no such table:'):
33+
case_header()
34+
cprint("[vf:list] It seems like you haven't populated the database yet.\n", 'yellow')
35+
os._exit(os.EX_OK)
36+
37+
def list_siddhis_db(self, filters:list):
38+
try:
39+
return (apply_filters(db.session.query(VFSD), filters).all())
40+
except exc.OperationalError as OE:
41+
self.handle_OpErr(OE)
42+
43+
def get_siddhi(self, siddhi_name):
44+
try:
45+
return VFSD.query.filter_by(name=siddhi_name.lower()).first()
46+
except exc.OperationalError as OE:
47+
self.handle_OpErr(OE)
48+
49+
def get_all_siddhis(self):
50+
return VFSD.query.all()
1851

19-
self.commit(VFSD(**data))
52+
def create_siddhi_tbl(self):
53+
try:
54+
VFSD.__table__.drop(db.engine)
55+
except exc.OperationalError as OE:
56+
pass
57+
58+
VFSD.__table__.create(db.engine)
2059

2160
class VFDBOps:
2261
def __init__(self, **vmnf_handler):
@@ -52,11 +91,16 @@ def commit(self,entry):
5291
def clean_db(self):
5392
db.drop_all()
5493

55-
def get_session(self, _sid_):
94+
def get_session(self,_sid_):
5695
return VFS.query.filter_by(session_id=_sid_).first()
5796

5897
def get_all_sessions(self):
59-
return VFS.query.all()
98+
try:
99+
return VFS.query.all()
100+
except exc.OperationalError as OE:
101+
self.create_db()
102+
103+
return False
60104

61105
def create_db(self):
62106
if not db_exists(app.config["SQLALCHEMY_DATABASE_URI"]):
@@ -70,11 +114,20 @@ def register_session(self):
70114
print(f"[{dt.now()}] Missing session data")
71115
return False
72116

117+
if not inspect(db.engine).has_table("_SESSIONS_"):
118+
self.create_sessions_tbl()
119+
73120
if self.get_session(self.session['session_id']):
74121
print(f"[{dt.now()}] Session {data['session_id']} already exists!")
75122
return False
76123

77124
self.commit(VFS(**self.session))
78125

126+
def create_sessions_tbl(self):
127+
try:
128+
VFS.__table__.drop(db.engine)
129+
except exc.OperationalError as OE:
130+
pass
79131

132+
VFS.__table__.create(db.engine)
80133

0 commit comments

Comments
 (0)