Swift Academy · पाठ

Fluent ORM और मॉडल

Vapor के Fluent ORM से डेटा स्थायी रूप से सहेजिए।

पाठ 3, कुल 4 में से13 चरण

Fluent ORM और मॉडल, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

Fluent क्या है

Fluent Vapor का ORM है। यह स्विफ्ट वर्गों को डेटाबेस पंक्तियों से मैप करता है और एक ही API के माध्यम से PostgreSQL, MySQL, SQLite और MongoDB का समर्थन करता है। आप स्विफ्ट लिखते हैं; Fluent SQL लिखता है।

import Fluent
import Vapor

मॉडल परिभाषित करना

Fluent मॉडल एक final class होता है, जो Model और आमतौर पर Content के अनुरूप होता है। इसमें एक schema (तालिका का नाम) और प्राथमिक कुंजी के लिए @ID प्रॉपर्टी घोषित की जाती है।

final class Planet: Model, Content {
    static let schema = "planets"

    @ID(key: .id)
    var id: UUID?

    init() {}
}

@Field प्रॉपर्टी रैपर

@Field से संग्रहीत कॉलम को मैप करें। कुंजी डेटाबेस कॉलम का नाम होती है। जिस प्रत्येक कॉलम को स्थायी रूप से संग्रहीत करना हो, उसके लिए एक प्रॉपर्टी जोड़ें।

@Field(key: "name")
var name: String

@Field(key: "diameter_km")
var diameterKm: Int

एक पूर्ण मॉडल

मॉडल में आवश्यक खाली init() के अतिरिक्त सदस्य-आधारित आरंभकर्ता भी होना चाहिए, ताकि आप कोड में इंस्टेंस बना सकें।

final class Planet: Model, Content {
    static let schema = "planets"
    @ID(key: .id) var id: UUID?
    @Field(key: "name") var name: String
    init() {}
    init(id: UUID? = nil, name: String) {
        self.id = id
        self.name = name
    }
}

डेटाबेस परिवर्तन

एक डेटाबेस परिवर्तन डेटाबेस स्कीमा बनाता या उसमें बदलाव करता है। यह AsyncMigration के अनुरूप होता है और prepare (लागू करना) तथा revert (पूर्ववत करना) लागू करता है।

struct CreatePlanet: AsyncMigration {
    func prepare(on db: Database) async throws {
        try await db.schema("planets")
            .id()
            .field("name", .string, .required)
            .create()
    }
    func revert(on db: Database) async throws {
        try await db.schema("planets").delete()
    }
}

डेटाबेस परिवर्तनों का पंजीकरण

अपने कॉन्फ़िगरेशन में डेटाबेस परिवर्तनों को app.migrations में जोड़ें, फिर उन्हें app.autoMigrate() या डेटाबेस-परिवर्तन कमांड से चलाएँ।

app.migrations.add(CreatePlanet())
try await app.autoMigrate()

रिकॉर्ड सहेजना

मॉडल का एक इंस्टेंस बनाएँ और अनुरोध के डेटाबेस के साथ save(on:) कॉल करें। Fluent एक INSERT जारी करता है और बनाई गई पहचान संख्या भर देता है।

app.post("planets") { req async throws -> Planet in
    let planet = try req.content.decode(Planet.self)
    try await planet.save(on: req.db)
    return planet
}

रिकॉर्ड पर क्वेरी करना

क्वेरी को सुविधाजनक ढंग से बनाने के लिए Model.query(on:) का उपयोग करें। .all() प्रत्येक पंक्ति लौटाता है; आवश्यकता के अनुसार filter और क्रम-विन्यास जोड़ें।

app.get("planets") { req async throws -> [Planet] in
    try await Planet.query(on: req.db).all()
}

ID से फ़िल्टर करना और खोजना

find(_:on:) प्राथमिक कुंजी के आधार पर रिकॉर्ड प्राप्त करता है और वैकल्पिक मान लौटाता है। filter कॉलम के मानों के आधार पर परिणामों को सीमित करता है।

let earth = try await Planet.query(on: req.db)
    .filter(\.$name == "Earth")
    .first()

let byId = try await Planet.find(someUUID, on: req.db)

अपडेट करना और हटाना

प्राप्त मॉडल की प्रॉपर्टी बदलकर update(on:) कॉल करें, या उसे delete(on:) से हटा दें। दोनों क्रियाएँ डेटाबेस पर असिंक्रोनस रूप से चलती हैं।

if let planet = try await Planet.find(id, on: req.db) {
    planet.name = "Renamed"
    try await planet.update(on: req.db)
    // or: try await planet.delete(on: req.db)
}

संबंध

Fluent प्रॉपर्टी रैपर के माध्यम से मॉडल संबंधों को संभालता है: एक-से-एक/एक-से-अनेक के लिए @Parent और @Child, तथा अनेक-से-अनेक के लिए @Siblings। ये विदेशी कुंजियाँ परिभाषित करते हैं और .with(...) से पहले से डेटा लोड करने की सुविधा देते हैं।

@Parent(key: "star_id")
var star: Star

// query eagerly loading the parent
Planet.query(on: req.db).with(\.$star).all()

त्वरित जाँच: Fluent

अपने ORM ज्ञान का परीक्षण करें।

पुनरावलोकन: Fluent ORM और मॉडल

अब आप Fluent से डेटा स्थायी रूप से संग्रहीत कर सकते हैं:

  • @ID और @Field प्रॉपर्टी रैपर तथा schema के साथ एक final class Model परिभाषित करें।
  • AsyncMigration से तालिकाएँ बनाएँ और उन्हें autoMigrate() से चलाएँ।
  • save, query(on:), find, update और delete से CRUD क्रियाएँ करें।
  • @Parent, @Child और @Siblings से मॉडल संबंध बनाएँ तथा .with से पहले से डेटा लोड करें।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “Fluent ORM और मॉडल” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Fluent ORM और मॉडल” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Fluent ORM और मॉडल” में मैं क्या सीखूँगा?

Vapor के Fluent ORM से डेटा स्थायी रूप से सहेजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“Fluent ORM और मॉडल” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. रूटिंग और अनुरोध सँभालना
  2. कंटेंट और JSON एन्कोडिंग
  3. Fluent ORM और मॉडल
  4. मिडलवेयर और प्रमाणीकरण
← Swift Academy पर वापस जाएँ