TinyDB-এ, আপনি Hooks ব্যবহার করে ডেটাবেসে Insert, Update, এবং Delete অপারেশনগুলির আগে বা পরে কিছু কার্যকলাপ পরিচালনা করতে পারেন। Hooks আপনাকে কাস্টম লগিক বা কার্যকলাপ পরিচালনা করার সুযোগ দেয়, যেমন ডেটা যাচাই, লগিং, বা ডেটার প্রক্রিয়াকরণের সময়।
TinyDB-তে ডেটা ইনসার্ট, আপডেট এবং ডিলিট করার জন্য Hooks তৈরি করার জন্য আপনাকে কিছু কাস্টম ফাংশন লিখতে হবে যা প্রতিটি অপারেশনের পূর্বে বা পরবর্তী কাজ করবে।
১. Insert Hook (ইনসার্ট হুক)
Insert অপারেশনের জন্য একটি হুক তৈরি করার সময়, আপনি ডেটা ইনসার্ট করার আগে বা পরে কিছু যাচাই বা লগিং করতে পারেন। উদাহরণস্বরূপ, একটি কাস্টম ফাংশন লিখে Insert অপারেশনের আগে ডেটা যাচাই করা যাবে।
উদাহরণ:
from tinydb import TinyDB, Query
# ডাটাবেস তৈরি
db = TinyDB('db.json')
# ইনসার্ট হুক
def before_insert(data):
# ডেটা যাচাই
if 'age' not in data:
raise ValueError("Age must be provided.")
if data['age'] < 18:
raise ValueError("Age must be 18 or older.")
print(f"Adding data: {data}")
# Insert অপারেশনের জন্য কাস্টম ফাংশন
def insert_with_hook(data):
before_insert(data) # হুক চালানো
db.insert(data)
# ডেটা ইনসার্ট করা
insert_with_hook({'name': 'Aziz', 'age': 25, 'city': 'Dhaka'})
এই কোডে, before_insert() হুকের মাধ্যমে ইনসার্টের আগে ডেটা যাচাই করা হচ্ছে। যদি ডেটার কিছু অংশ না থাকে বা ভুল হয়, তবে তা ব্যতিক্রম (Exception) তৈরি করবে।
২. Update Hook (আপডেট হুক)
Update অপারেশনের জন্যও একইভাবে একটি হুক তৈরি করা যায়। এখানে আপনি Update অপারেশনের আগে কিছু শর্ত যাচাই করতে পারেন, যেমন ডেটার কোনো প্রোপার্টি পরিবর্তিত হয়েছে কিনা।
উদাহরণ:
# আপডেট হুক
def before_update(query, new_data):
if 'age' in new_data and new_data['age'] < 18:
raise ValueError("Age must be 18 or older.")
print(f"Updating data where {query} with new values: {new_data}")
# আপডেট অপারেশন
def update_with_hook(query, new_data):
before_update(query, new_data) # হুক চালানো
db.update(new_data, query)
# ডেটা আপডেট করা
update_with_hook(Query().name == 'Aziz', {'age': 26})
এখানে, before_update() হুকের মাধ্যমে আপডেটের আগে ডেটার মান যাচাই করা হচ্ছে। যদি কোনো শর্ত পূর্ণ না হয়, তবে একটি ব্যতিক্রম সৃষ্টি হবে।
৩. Delete Hook (ডিলিট হুক)
Delete অপারেশনের জন্যও একটি হুক তৈরি করা যায়, যাতে আপনি ডেটা মুছে ফেলার আগে বা পরে কিছু লজিক পরিচালনা করতে পারেন। উদাহরণস্বরূপ, আপনি ডেটা মুছে ফেলার আগে একটি লগ তৈরি করতে পারেন।
উদাহরণ:
# ডিলিট হুক
def before_delete(query):
print(f"Deleting data where: {query}")
# ডেটা ডিলিট করা
def delete_with_hook(query):
before_delete(query) # হুক চালানো
db.remove(query)
# ডেটা ডিলিট করা
delete_with_hook(Query().name == 'Aziz')
এখানে, before_delete() হুকের মাধ্যমে ডিলিট অপারেশনের আগে ডেটা মুছে ফেলার শর্তটি লগ করা হয়েছে।
সারাংশ
- Insert Hook: ডেটা ইনসার্ট করার আগে বা পরে যাচাই এবং কাস্টম কাজ করতে হুক ব্যবহার করা হয়।
- Update Hook: ডেটা আপডেট করার আগে কিছু শর্ত যাচাই করা বা কাস্টম প্রক্রিয়া পরিচালনা করা যায়।
- Delete Hook: ডেটা মুছে ফেলার আগে বা পরে কিছু কার্যকলাপ পরিচালনা করতে হুক ব্যবহার করা যায়।
এই ধরনের কাস্টম Hooks ব্যবহারের মাধ্যমে TinyDB তে ডেটা ব্যবস্থাপনা আরও দক্ষ এবং নিরাপদ করা যায়, কারণ এতে ডেটার সঠিকতা এবং অখণ্ডতা নিশ্চিত করা যায়।
Read more