mirror of
				https://github.com/LibreTranslate/LibreTranslate.git
				synced 2025-10-31 10:37:13 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import sqlite3
 | |
| import os
 | |
| 
 | |
| from expiringdict import ExpiringDict
 | |
| 
 | |
| DEFAULT_DB_PATH = "db/suggestions.db"
 | |
| 
 | |
| 
 | |
| class Database:
 | |
|     def __init__(self, db_path=DEFAULT_DB_PATH, max_cache_len=1000, max_cache_age=30):
 | |
|         # Legacy check - this can be removed at some point in the near future
 | |
|         if os.path.isfile("suggestions.db") and not os.path.isfile("db/suggestions.db"):
 | |
|             print("Migrating %s to %s" % ("suggestions.db", "db/suggestions.db"))
 | |
|             try:
 | |
|                 os.rename("suggestions.db", "db/suggestions.db")
 | |
|             except Exception as e:
 | |
|                 print(str(e))
 | |
| 
 | |
|         self.db_path = db_path
 | |
|         self.cache = ExpiringDict(max_len=max_cache_len, max_age_seconds=max_cache_age)
 | |
| 
 | |
|         # Make sure to do data synchronization on writes!
 | |
|         self.c = sqlite3.connect(db_path, check_same_thread=False)
 | |
|         self.c.execute(
 | |
|             """CREATE TABLE IF NOT EXISTS suggestions (
 | |
|             "q"	TEXT NOT NULL,
 | |
|             "s"	TEXT NOT NULL,
 | |
|             "source"	TEXT NOT NULL,
 | |
|             "target"	TEXT NOT NULL
 | |
|         );"""
 | |
|         )
 | |
| 
 | |
|     def add(self, q, s, source, target):
 | |
|         self.c.execute(
 | |
|             "INSERT INTO suggestions (q, s, source, target) VALUES (?, ?, ?, ?)",
 | |
|             (q, s, source, target),
 | |
|         )
 | |
|         self.c.commit()
 | |
|         return True
 |