Get the resource wells working
This commit is contained in:
		
							parent
							
								
									e5d42c7b3a
								
							
						
					
					
						commit
						83010fa171
					
				
							
								
								
									
										23
									
								
								data.sql
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								data.sql
									
									
									
									
									
								
							@ -15,13 +15,18 @@ INSERT INTO users(name) VALUES
 | 
				
			|||||||
INSERT INTO staking_source(user_id, address) VALUES
 | 
					INSERT INTO staking_source(user_id, address) VALUES
 | 
				
			||||||
(1, '12345');
 | 
					(1, '12345');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
INSERT INTO resource_well(staking_source_id, resource_id, init_supply) VALUES
 | 
					INSERT INTO resource_well(source_id, resource_id, init_supply) VALUES
 | 
				
			||||||
(1, 1, 100);
 | 
					(1, 1, 200);
 | 
				
			||||||
INSERT INTO resource_well(staking_source_id, resource_id, init_supply) VALUES
 | 
					INSERT INTO resource_well(source_id, resource_id, init_supply) VALUES
 | 
				
			||||||
(1, 2, 100);
 | 
					(1, 2, 100);
 | 
				
			||||||
INSERT INTO resource_well(staking_source_id, resource_id, init_supply) VALUES
 | 
					INSERT INTO resource_well(source_id, resource_id, init_supply) VALUES
 | 
				
			||||||
(1, 3, 100);
 | 
					(1, 3, 50);
 | 
				
			||||||
INSERT INTO resource_well(staking_source_id, resource_id, init_supply) VALUES
 | 
					INSERT INTO resource_well(source_id, resource_id, init_supply) VALUES
 | 
				
			||||||
(1, 4, 100);
 | 
					(1, 4, 125);
 | 
				
			||||||
INSERT INTO resource_well(staking_source_id, resource_id, init_supply) VALUES
 | 
					INSERT INTO resource_well(source_id, resource_id, init_supply) VALUES
 | 
				
			||||||
(1, 5, 100);
 | 
					(1, 5, 150);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SELECT name,init_supply
 | 
				
			||||||
 | 
					FROM resource_well
 | 
				
			||||||
 | 
					INNER JOIN resource ON resource.id = resource_well.resource_id
 | 
				
			||||||
 | 
					WHERE source_id = 1;
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										114
									
								
								mm.py
									
									
									
									
									
								
							
							
						
						
									
										114
									
								
								mm.py
									
									
									
									
									
								
							@ -5,50 +5,35 @@ import datetime
 | 
				
			|||||||
import dearpygui.demo as demo
 | 
					import dearpygui.demo as demo
 | 
				
			||||||
import dearpygui.dearpygui as dpg
 | 
					import dearpygui.dearpygui as dpg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dpg.create_context()
 | 
					 | 
				
			||||||
dpg.create_viewport(title='Custom Title', width=1200, height=800)
 | 
					 | 
				
			||||||
dpg.setup_dearpygui()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
with dpg.font_registry():
 | 
					 | 
				
			||||||
    # first argument ids the path to the .ttf or .otf file
 | 
					 | 
				
			||||||
    default_font = dpg.add_font("fira.ttf", 20)
 | 
					 | 
				
			||||||
    dpg.bind_font(default_font)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
conn = sql.connect("mm.db", check_same_thread=False)
 | 
					conn = sql.connect("mm.db", check_same_thread=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
current_user = "Joe"
 | 
					current_user = "Joe"
 | 
				
			||||||
current_user_id = 1
 | 
					current_user_id = 1
 | 
				
			||||||
current_source = 1
 | 
					
 | 
				
			||||||
 | 
					staking_sources = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cursor = conn.cursor()
 | 
					cursor = conn.cursor()
 | 
				
			||||||
cursor.execute("SELECT created_at FROM staking_source WHERE user_id = ?", (current_user_id,))
 | 
					 | 
				
			||||||
staked_timestamp = parse(cursor.fetchone()[0])
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
cursor.execute("SELECT name FROM resource")
 | 
					cursor.execute("SELECT id,name FROM resource")
 | 
				
			||||||
resources = [i[0].capitalize() for i in cursor.fetchall()]
 | 
					resources = cursor.fetchall()
 | 
				
			||||||
 | 
					id_to_resource = {id: name for id, name in resources}
 | 
				
			||||||
 | 
					resource_to_id = {name: id for id, name in resources}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cursor.execute("SELECT id,created_at FROM staking_source")
 | 
					def get_moons():
 | 
				
			||||||
staking_sources = [(i[0], i[1].capitalize()) for i in cursor.fetchall()]
 | 
					    staking_sources.clear()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for i,(sid,ts) in enumerate(staking_sources):
 | 
					    cursor.execute("SELECT id,created_at FROM staking_source")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for i,(sid,ts) in enumerate(cursor.fetchall()):
 | 
				
			||||||
        cursor.execute("""
 | 
					        cursor.execute("""
 | 
				
			||||||
    SELECT resource.id,name,init_supply
 | 
					        SELECT name,init_supply,staking_event.created_at
 | 
				
			||||||
        FROM resource_well
 | 
					        FROM resource_well
 | 
				
			||||||
        INNER JOIN resource ON resource.id = resource_well.resource_id
 | 
					        INNER JOIN resource ON resource.id = resource_well.resource_id
 | 
				
			||||||
    WHERE staking_source_id = ?;
 | 
					        LEFT JOIN staking_event ON staking_event.well_id = resource_well.id
 | 
				
			||||||
 | 
					        WHERE resource_well.source_id = ?;
 | 
				
			||||||
        """, (sid,))
 | 
					        """, (sid,))
 | 
				
			||||||
    wells = [(i[0],i[1].capitalize(),i[2]) for i in cursor.fetchall()]
 | 
					        wells = {name: (supply,timestamp) for name,supply,timestamp in cursor.fetchall()}
 | 
				
			||||||
    staking_sources[i] = (sid,ts,wells)
 | 
					        staking_sources[sid] = (ts,wells)
 | 
				
			||||||
 | 
					 | 
				
			||||||
for i,(sid,ts,wells) in enumerate(staking_sources):
 | 
					 | 
				
			||||||
    cursor.execute("""
 | 
					 | 
				
			||||||
    SELECT resoure_id,
 | 
					 | 
				
			||||||
    FROM resource_well
 | 
					 | 
				
			||||||
    INNER JOIN resource ON resource.id = resource_well.resource_id
 | 
					 | 
				
			||||||
    WHERE staking_source_id = ?;
 | 
					 | 
				
			||||||
    """, (sid,))
 | 
					 | 
				
			||||||
    wells = [(i[0],i[1].capitalize(),i[2]) for i in cursor.fetchall()]
 | 
					 | 
				
			||||||
    staking_sources[i] = (sid,ts,wells)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
def mint():
 | 
					def mint():
 | 
				
			||||||
    cursor = conn.cursor()
 | 
					    cursor = conn.cursor()
 | 
				
			||||||
@ -67,21 +52,36 @@ def mint():
 | 
				
			|||||||
        """, (user_id, f"0x{rand_hash}"))
 | 
					        """, (user_id, f"0x{rand_hash}"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    conn.commit()
 | 
					    conn.commit()
 | 
				
			||||||
 | 
					    get_moons()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def mine(a,b,user_data):
 | 
					def mine(a,b,user_data):
 | 
				
			||||||
    print(user_data)
 | 
					    source_id,well_name = user_data
 | 
				
			||||||
    source_id,well_id = user_data
 | 
					 | 
				
			||||||
    cursor = conn.cursor()
 | 
					    cursor = conn.cursor()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cursor.execute("""
 | 
					    cursor.execute("""
 | 
				
			||||||
        INSERT INTO staking_event (source_id, well_id)
 | 
					        INSERT INTO staking_event (source_id, well_id)
 | 
				
			||||||
        VALUES (?, ?)
 | 
					        VALUES (?, ?)
 | 
				
			||||||
    """, (source_id, well_id))
 | 
					    """, (source_id, resource_to_id[well_name]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    conn.commit()
 | 
					    conn.commit()
 | 
				
			||||||
 | 
					    get_moons()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def upgrade(a,b,user_data):
 | 
				
			||||||
 | 
					    ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					get_moons()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dpg.create_context()
 | 
				
			||||||
 | 
					dpg.create_viewport(title='Custom Title', width=1200, height=800)
 | 
				
			||||||
 | 
					dpg.setup_dearpygui()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# dpg.font("fira.ttf", 50)
 | 
				
			||||||
 | 
					with dpg.font_registry():
 | 
				
			||||||
 | 
					    # first argument ids the path to the .ttf or .otf file
 | 
				
			||||||
 | 
					    default_font = dpg.add_font("fira.ttf", 20)
 | 
				
			||||||
 | 
					    dpg.bind_font(default_font)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
width, height, channels, data = dpg.load_image("moon-small.jpg")
 | 
					width, height, channels, data = dpg.load_image("moon-small.jpg")
 | 
				
			||||||
 | 
					 | 
				
			||||||
with dpg.texture_registry(show=False):
 | 
					with dpg.texture_registry(show=False):
 | 
				
			||||||
    dpg.add_static_texture(width=width, height=height, default_value=data, tag="moon")
 | 
					    dpg.add_static_texture(width=width, height=height, default_value=data, tag="moon")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -89,45 +89,33 @@ with dpg.window(label="Example Window", tag="Primary", width=1200, height=800):
 | 
				
			|||||||
    dpg.add_text("User: Joe")
 | 
					    dpg.add_text("User: Joe")
 | 
				
			||||||
    with dpg.group(horizontal=True):
 | 
					    with dpg.group(horizontal=True):
 | 
				
			||||||
        for res in resources:
 | 
					        for res in resources:
 | 
				
			||||||
            dpg.add_text(f"{res}: 0 |")
 | 
					            dpg.add_text(f"{res[1].capitalize()}: 0 |")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    dpg.add_button(label="Mint Moon", callback=mint)
 | 
					    dpg.add_button(label="Mint Moon", callback=mint)
 | 
				
			||||||
    dpg.add_separator()
 | 
					    dpg.add_separator()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for source in staking_sources:
 | 
					    for sid,source in staking_sources.items():
 | 
				
			||||||
        dpg.add_image("moon")
 | 
					        dpg.add_image("moon")
 | 
				
			||||||
        with dpg.group(horizontal=True):
 | 
					        with dpg.group(horizontal=True):
 | 
				
			||||||
            dpg.add_button(label="Upgrade")
 | 
					            for name,(amount,timestamp) in source[1].items():
 | 
				
			||||||
            dpg.add_button(label="Claim")
 | 
					                if timestamp:
 | 
				
			||||||
        with dpg.group(horizontal=True):
 | 
					                    with dpg.group(horizontal=False):
 | 
				
			||||||
            for well in source[2]:
 | 
					                        dpg.add_text(name.capitalize())
 | 
				
			||||||
                lbl = f"Mine {well[1]} ({well[2]})"
 | 
					                        elapsed = str(datetime.datetime.utcnow() - parse(timestamp)).split(".")[0]
 | 
				
			||||||
                data = (source[0],well[0])
 | 
					                        dpg.add_text(f"Mining for {elapsed}")
 | 
				
			||||||
 | 
					                        data = (sid,name)
 | 
				
			||||||
 | 
					                        dpg.add_button(label="Upgrade", callback=upgrade, user_data=data)
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    lbl = f"Mine {name.capitalize()} ({amount})"
 | 
				
			||||||
 | 
					                    data = (sid,name)
 | 
				
			||||||
                    dpg.add_button(label=lbl, callback=mine, user_data=data)
 | 
					                    dpg.add_button(label=lbl, callback=mine, user_data=data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dpg.show_viewport()
 | 
					dpg.show_viewport()
 | 
				
			||||||
dpg.set_primary_window("Primary", True)
 | 
					dpg.set_primary_window("Primary", True)
 | 
				
			||||||
dpg.start_dearpygui()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # if gui_button(Rectangle(10,10,150,50), "#154#Mint"):
 | 
					 | 
				
			||||||
    #     mint()
 | 
					 | 
				
			||||||
    # if current_source:
 | 
					 | 
				
			||||||
    #     now = datetime.datetime.utcnow()
 | 
					 | 
				
			||||||
    #     timespan = str(now - staked_timestamp).split('.')[0]
 | 
					 | 
				
			||||||
    #     draw_text(f"Mining start time: {timespan}", 200, 20, 30, text_color)
 | 
					 | 
				
			||||||
    #     btn_pos = 100
 | 
					 | 
				
			||||||
    #     spacing = 145
 | 
					 | 
				
			||||||
    #     for i,res in enumerate(resources):
 | 
					 | 
				
			||||||
    #         draw_text(f"{res}", 20, i * spacing + btn_pos, 27, text_color)
 | 
					 | 
				
			||||||
    #         draw_text(f"Amount", 20, i * spacing + btn_pos + 40, 20, text_color)
 | 
					 | 
				
			||||||
    #         if gui_button(Rectangle(20,i * spacing + btn_pos + 70,110,40), "#78#Upgrade"):
 | 
					 | 
				
			||||||
    #             mint()
 | 
					 | 
				
			||||||
    #         if gui_button(Rectangle(160,i * spacing + btn_pos + 70,110,40), "#78#Claim"):
 | 
					 | 
				
			||||||
    #             mint()
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
    # end_drawing()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while dpg.is_dearpygui_running():
 | 
				
			||||||
 | 
					    # put old render callback code here!
 | 
				
			||||||
 | 
					    dpg.render_dearpygui_frame()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
conn.close()
 | 
					conn.close()
 | 
				
			||||||
dpg.destroy_context()
 | 
					dpg.destroy_context()
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										34
									
								
								tables.sql
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								tables.sql
									
									
									
									
									
								
							@ -3,23 +3,9 @@ CREATE TABLE users (
 | 
				
			|||||||
    name varchar(32) not null
 | 
					    name varchar(32) not null
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- DROP TABLE users;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE TABLE bank_account(
 | 
					 | 
				
			||||||
    id integer primary key autoincrement,
 | 
					 | 
				
			||||||
    user_id int not null,
 | 
					 | 
				
			||||||
    resource_id int not null,
 | 
					 | 
				
			||||||
    balance int not null default 0 CHECK (balance >= 0),
 | 
					 | 
				
			||||||
    created_at timestamp DEFAULT (current_timestamp),
 | 
					 | 
				
			||||||
    CONSTRAINT fk_user FOREIGN KEY(user_id)
 | 
					 | 
				
			||||||
        REFERENCES users(id),
 | 
					 | 
				
			||||||
    CONSTRAINT fk_resource FOREIGN KEY(resource_id)
 | 
					 | 
				
			||||||
        REFERENCES resource(id)
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE TABLE resource(
 | 
					CREATE TABLE resource(
 | 
				
			||||||
    id integer primary key autoincrement,
 | 
					    id integer primary key autoincrement,
 | 
				
			||||||
    name varchar(32) not null
 | 
					    name varchar(32) not null unique
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CREATE TABLE staking_source(
 | 
					CREATE TABLE staking_source(
 | 
				
			||||||
@ -33,12 +19,12 @@ CREATE TABLE staking_source(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
CREATE TABLE resource_well(
 | 
					CREATE TABLE resource_well(
 | 
				
			||||||
    id integer primary key autoincrement,
 | 
					    id integer primary key autoincrement,
 | 
				
			||||||
    staking_source_id int not null,
 | 
					    source_id int not null,
 | 
				
			||||||
    resource_id int not null,
 | 
					    resource_id int not null,
 | 
				
			||||||
    init_supply int not null,
 | 
					    init_supply int not null,
 | 
				
			||||||
    CONSTRAINT fk_resource FOREIGN KEY(resource_id)
 | 
					    CONSTRAINT fk_rid FOREIGN KEY(resource_id)
 | 
				
			||||||
        REFERENCES resource(id),
 | 
					        REFERENCES resource(id),
 | 
				
			||||||
    CONSTRAINT fk_ssource FOREIGN KEY(staking_source_id)
 | 
					    CONSTRAINT fk_sid FOREIGN KEY(source_id)
 | 
				
			||||||
        REFERENCES staking_source(id)
 | 
					        REFERENCES staking_source(id)
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -69,3 +55,15 @@ CREATE TABLE claim_event(
 | 
				
			|||||||
    CONSTRAINT fk_ures FOREIGN KEY(staking_source_id)
 | 
					    CONSTRAINT fk_ures FOREIGN KEY(staking_source_id)
 | 
				
			||||||
        REFERENCES staking_source(id)
 | 
					        REFERENCES staking_source(id)
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CREATE TABLE bank_account(
 | 
				
			||||||
 | 
					    id integer primary key autoincrement,
 | 
				
			||||||
 | 
					    user_id int not null,
 | 
				
			||||||
 | 
					    resource_id int not null,
 | 
				
			||||||
 | 
					    balance int not null default 0 CHECK (balance >= 0),
 | 
				
			||||||
 | 
					    created_at timestamp DEFAULT (current_timestamp),
 | 
				
			||||||
 | 
					    CONSTRAINT fk_user FOREIGN KEY(user_id)
 | 
				
			||||||
 | 
					        REFERENCES users(id),
 | 
				
			||||||
 | 
					    CONSTRAINT fk_resource FOREIGN KEY(resource_id)
 | 
				
			||||||
 | 
					        REFERENCES resource(id)
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user