Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Fluent

Fluent

Simple ActiveRecord implementation for working with your database in Swift.

  • Easy setup
  • Beautiful syntax
  • Generically typed

Getting Started

Clone the Example project to start making your application. If you are also looking for a web server, check out Vapor. It was built to work well with Fluent.

You must have Swift 2.2 or later installed. You can learn more about Swift 2.2 at Swift.org

Work in Progress

This is a work in progress, so don't rely on this for anything important. And pull requests are welcome!

Example

Using Fluent is simple and expressive.

iflet user =User.find(5){print("Found \(user.name)")
user.name ="New Name"
user.save()}

Underlying Fluent is a powerful Query builder.

letuser=Query<User>().filter("id", notIn:[1,2,3]).filter("age",.GreaterThan,21).first

Setup

Start by importing Fluent into your application.

import Fluent

Package.swift

import PackageDescription
letpackage=Package(
name:"FluentApp",
dependencies:[.Package(url:"https://github.com/tannernelson/fluent.git", majorVersion:0)])

Drivers

Fluent currently supports SQLite. Support for MySQL, and MongoDB are in the works.

Print Driver

By default, the PrintDriver is enabled. This driver will simply print out the commands you make to Fluent. This is only useful for development of Fluent.

SQLite

Start by ensuring SQLite3 is installed on your machine. If you are on a Mac, it will already be installed. For Linux, simply run sudo apt-get install libsqlite3-dev.

Once SQLite3 is installed, add the Fluent SQLiteDriver to your project.

Package.swift

.Package(url:"https://github.com/tannernelson/fluent-sqlite-driver.git", majorVersion:0)

Then import the driver and set it as your default database driver.

import SQLiteDriver
Database.driver =SQLiteDriver()

You are now ready to use SQLite. The database file will be stored in Database/main.sqlite.

Models

Make your application models conform to the Model protocol to allow them to work with Fluent.

publicprotocolModel{
///The entities database identifier. `nil` when not saved yet.
varid:String?{get}
///The database table in which entities are stored.
staticvartable:String{get}
/**
This method will be called when the entity is saved. The keys of the dictionary are the column names
in the database.
*/
func serialize()->[String:String]init(serialized:[String:String])}

When your application models conform to the Model protocol, they gain access to the following helper functions.

extensionModel{publicfunc save()
public func delete()
public static func find(id:Int)->Self?}

Querying

Create an instance of the query builder by passing one of your application models that conforms to the Model protocol.

letquery=Query<User>()

Filters

You can filter by equivalence relations, as well is in/not in relations.

Compare

query.filter("age",.GreaterThan,21)
publicenumComparison{case Equals, NotEquals, GreaterThanOrEquals, LessThanOrEquals, GreaterThan, LessThan
}

Subset

query.filter("id", in:[1,2,3])
publicenumComparison{case In, NotIn
}

Results

Call .results for all of the results from the query, or .first for only the first result.

Delete

Call .delete to delete all rows affected by the query.

Save

Call .save(model: T), passing in an instance of the class used to instantiate the Query to save it. This performs the same function as calling .save() on the model itself.

Deploying

Fluent has been successfully tested on Ubuntu 14.04 LTS (DigitalOcean) and Ubuntu 15.10 (VirtualBox).

To deploy to DigitalOcean, simply

  • Install Swift 2.2
    • wget the .tar.gz from Apple
    • Set the export PATH in your ~/.bashrc
    • (you may need to install binutils as well if you see ar not found)
  • Clone your fork of the fluent-example repository to the server
  • cd into the repository
    • Run swift build
    • Run .build/debug/MyApp

My website http://tanner.xyz is currently running using Vapor and Fluent.

About

Simple ActiveRecord implementation for Swift

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Fluent

Fluent

Simple ActiveRecord implementation for working with your database in Swift.

  • Easy setup
  • Beautiful syntax
  • Generically typed

Getting Started

Clone the Example project to start making your application. If you are also looking for a web server, check out Vapor. It was built to work well with Fluent.

You must have Swift 2.2 or later installed. You can learn more about Swift 2.2 at Swift.org

Work in Progress

This is a work in progress, so don't rely on this for anything important. And pull requests are welcome!

Example

Using Fluent is simple and expressive.

iflet user =User.find(5){print("Found \(user.name)")
user.name ="New Name"
user.save()}

Underlying Fluent is a powerful Query builder.

letuser=Query<User>().filter("id", notIn:[1,2,3]).filter("age",.GreaterThan,21).first

Setup

Start by importing Fluent into your application.

import Fluent

Package.swift

import PackageDescription
letpackage=Package(
name:"FluentApp",
dependencies:[.Package(url:"https://github.com/tannernelson/fluent.git", majorVersion:0)])

Drivers

Fluent currently supports SQLite. Support for MySQL, and MongoDB are in the works.

Print Driver

By default, the PrintDriver is enabled. This driver will simply print out the commands you make to Fluent. This is only useful for development of Fluent.

SQLite

Start by ensuring SQLite3 is installed on your machine. If you are on a Mac, it will already be installed. For Linux, simply run sudo apt-get install libsqlite3-dev.

Once SQLite3 is installed, add the Fluent SQLiteDriver to your project.

Package.swift

.Package(url:"https://github.com/tannernelson/fluent-sqlite-driver.git", majorVersion:0)

Then import the driver and set it as your default database driver.

import SQLiteDriver
Database.driver =SQLiteDriver()

You are now ready to use SQLite. The database file will be stored in Database/main.sqlite.

Models

Make your application models conform to the Model protocol to allow them to work with Fluent.

publicprotocolModel{
///The entities database identifier. `nil` when not saved yet.
varid:String?{get}
///The database table in which entities are stored.
staticvartable:String{get}
/**
This method will be called when the entity is saved. The keys of the dictionary are the column names
in the database.
*/
func serialize()->[String:String]init(serialized:[String:String])}

When your application models conform to the Model protocol, they gain access to the following helper functions.

extensionModel{publicfunc save()
public func delete()
public static func find(id:Int)->Self?}

Querying

Create an instance of the query builder by passing one of your application models that conforms to the Model protocol.

letquery=Query<User>()

Filters

You can filter by equivalence relations, as well is in/not in relations.

Compare

query.filter("age",.GreaterThan,21)
publicenumComparison{case Equals, NotEquals, GreaterThanOrEquals, LessThanOrEquals, GreaterThan, LessThan
}

Subset

query.filter("id", in:[1,2,3])
publicenumComparison{case In, NotIn
}

Results

Call .results for all of the results from the query, or .first for only the first result.

Delete

Call .delete to delete all rows affected by the query.

Save

Call .save(model: T), passing in an instance of the class used to instantiate the Query to save it. This performs the same function as calling .save() on the model itself.

Deploying

Fluent has been successfully tested on Ubuntu 14.04 LTS (DigitalOcean) and Ubuntu 15.10 (VirtualBox).

To deploy to DigitalOcean, simply

  • Install Swift 2.2
    • wget the .tar.gz from Apple
    • Set the export PATH in your ~/.bashrc
    • (you may need to install binutils as well if you see ar not found)
  • Clone your fork of the fluent-example repository to the server
  • cd into the repository
    • Run swift build
    • Run .build/debug/MyApp

My website http://tanner.xyz is currently running using Vapor and Fluent.

About

Simple ActiveRecord implementation for Swift

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Fluent

Fluent

Simple ActiveRecord implementation for working with your database in Swift.

  • Easy setup
  • Beautiful syntax
  • Generically typed

Getting Started

Clone the Example project to start making your application. If you are also looking for a web server, check out Vapor. It was built to work well with Fluent.

You must have Swift 2.2 or later installed. You can learn more about Swift 2.2 at Swift.org

Work in Progress

This is a work in progress, so don't rely on this for anything important. And pull requests are welcome!

Example

Using Fluent is simple and expressive.

iflet user =User.find(5){print("Found \(user.name)")
user.name ="New Name"
user.save()}

Underlying Fluent is a powerful Query builder.

letuser=Query<User>().filter("id", notIn:[1,2,3]).filter("age",.GreaterThan,21).first

Setup

Start by importing Fluent into your application.

import Fluent

Package.swift

import PackageDescription
letpackage=Package(
name:"FluentApp",
dependencies:[.Package(url:"https://github.com/tannernelson/fluent.git", majorVersion:0)])

Drivers

Fluent currently supports SQLite. Support for MySQL, and MongoDB are in the works.

Print Driver

By default, the PrintDriver is enabled. This driver will simply print out the commands you make to Fluent. This is only useful for development of Fluent.

SQLite

Start by ensuring SQLite3 is installed on your machine. If you are on a Mac, it will already be installed. For Linux, simply run sudo apt-get install libsqlite3-dev.

Once SQLite3 is installed, add the Fluent SQLiteDriver to your project.

Package.swift

.Package(url:"https://github.com/tannernelson/fluent-sqlite-driver.git", majorVersion:0)

Then import the driver and set it as your default database driver.

import SQLiteDriver
Database.driver =SQLiteDriver()

You are now ready to use SQLite. The database file will be stored in Database/main.sqlite.

Models

Make your application models conform to the Model protocol to allow them to work with Fluent.

publicprotocolModel{
///The entities database identifier. `nil` when not saved yet.
varid:String?{get}
///The database table in which entities are stored.
staticvartable:String{get}
/**
This method will be called when the entity is saved. The keys of the dictionary are the column names
in the database.
*/
func serialize()->[String:String]init(serialized:[String:String])}

When your application models conform to the Model protocol, they gain access to the following helper functions.

extensionModel{publicfunc save()
public func delete()
public static func find(id:Int)->Self?}

Querying

Create an instance of the query builder by passing one of your application models that conforms to the Model protocol.

letquery=Query<User>()

Filters

You can filter by equivalence relations, as well is in/not in relations.

Compare

query.filter("age",.GreaterThan,21)
publicenumComparison{case Equals, NotEquals, GreaterThanOrEquals, LessThanOrEquals, GreaterThan, LessThan
}

Subset

query.filter("id", in:[1,2,3])
publicenumComparison{case In, NotIn
}

Results

Call .results for all of the results from the query, or .first for only the first result.

Delete

Call .delete to delete all rows affected by the query.

Save

Call .save(model: T), passing in an instance of the class used to instantiate the Query to save it. This performs the same function as calling .save() on the model itself.

Deploying

Fluent has been successfully tested on Ubuntu 14.04 LTS (DigitalOcean) and Ubuntu 15.10 (VirtualBox).

To deploy to DigitalOcean, simply

  • Install Swift 2.2
    • wget the .tar.gz from Apple
    • Set the export PATH in your ~/.bashrc
    • (you may need to install binutils as well if you see ar not found)
  • Clone your fork of the fluent-example repository to the server
  • cd into the repository
    • Run swift build
    • Run .build/debug/MyApp

My website http://tanner.xyz is currently running using Vapor and Fluent.

About

Simple ActiveRecord implementation for Swift

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Fluent

Fluent

Simple ActiveRecord implementation for working with your database in Swift.

  • Easy setup
  • Beautiful syntax
  • Generically typed

Getting Started

Clone the Example project to start making your application. If you are also looking for a web server, check out Vapor. It was built to work well with Fluent.

You must have Swift 2.2 or later installed. You can learn more about Swift 2.2 at Swift.org

Work in Progress

This is a work in progress, so don't rely on this for anything important. And pull requests are welcome!

Example

Using Fluent is simple and expressive.

iflet user =User.find(5){print("Found \(user.name)")
user.name ="New Name"
user.save()}

Underlying Fluent is a powerful Query builder.

letuser=Query<User>().filter("id", notIn:[1,2,3]).filter("age",.GreaterThan,21).first

Setup

Start by importing Fluent into your application.

import Fluent

Package.swift

import PackageDescription
letpackage=Package(
name:"FluentApp",
dependencies:[.Package(url:"https://github.com/tannernelson/fluent.git", majorVersion:0)])

Drivers

Fluent currently supports SQLite. Support for MySQL, and MongoDB are in the works.

Print Driver

By default, the PrintDriver is enabled. This driver will simply print out the commands you make to Fluent. This is only useful for development of Fluent.

SQLite

Start by ensuring SQLite3 is installed on your machine. If you are on a Mac, it will already be installed. For Linux, simply run sudo apt-get install libsqlite3-dev.

Once SQLite3 is installed, add the Fluent SQLiteDriver to your project.

Package.swift

.Package(url:"https://github.com/tannernelson/fluent-sqlite-driver.git", majorVersion:0)

Then import the driver and set it as your default database driver.

import SQLiteDriver
Database.driver =SQLiteDriver()

You are now ready to use SQLite. The database file will be stored in Database/main.sqlite.

Models

Make your application models conform to the Model protocol to allow them to work with Fluent.

publicprotocolModel{
///The entities database identifier. `nil` when not saved yet.
varid:String?{get}
///The database table in which entities are stored.
staticvartable:String{get}
/**
This method will be called when the entity is saved. The keys of the dictionary are the column names
in the database.
*/
func serialize()->[String:String]init(serialized:[String:String])}

When your application models conform to the Model protocol, they gain access to the following helper functions.

extensionModel{publicfunc save()
public func delete()
public static func find(id:Int)->Self?}

Querying

Create an instance of the query builder by passing one of your application models that conforms to the Model protocol.

letquery=Query<User>()

Filters

You can filter by equivalence relations, as well is in/not in relations.

Compare

query.filter("age",.GreaterThan,21)
publicenumComparison{case Equals, NotEquals, GreaterThanOrEquals, LessThanOrEquals, GreaterThan, LessThan
}

Subset

query.filter("id", in:[1,2,3])
publicenumComparison{case In, NotIn
}

Results

Call .results for all of the results from the query, or .first for only the first result.

Delete

Call .delete to delete all rows affected by the query.

Save

Call .save(model: T), passing in an instance of the class used to instantiate the Query to save it. This performs the same function as calling .save() on the model itself.

Deploying

Fluent has been successfully tested on Ubuntu 14.04 LTS (DigitalOcean) and Ubuntu 15.10 (VirtualBox).

To deploy to DigitalOcean, simply

  • Install Swift 2.2
    • wget the .tar.gz from Apple
    • Set the export PATH in your ~/.bashrc
    • (you may need to install binutils as well if you see ar not found)
  • Clone your fork of the fluent-example repository to the server
  • cd into the repository
    • Run swift build
    • Run .build/debug/MyApp

My website http://tanner.xyz is currently running using Vapor and Fluent.

About

Simple ActiveRecord implementation for Swift

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Fluent

Fluent

Simple ActiveRecord implementation for working with your database in Swift.

  • Easy setup
  • Beautiful syntax
  • Generically typed

Getting Started

Clone the Example project to start making your application. If you are also looking for a web server, check out Vapor. It was built to work well with Fluent.

You must have Swift 2.2 or later installed. You can learn more about Swift 2.2 at Swift.org

Work in Progress

This is a work in progress, so don't rely on this for anything important. And pull requests are welcome!

Example

Using Fluent is simple and expressive.

iflet user =User.find(5){print("Found \(user.name)")
user.name ="New Name"
user.save()}

Underlying Fluent is a powerful Query builder.

letuser=Query<User>().filter("id", notIn:[1,2,3]).filter("age",.GreaterThan,21).first

Setup

Start by importing Fluent into your application.

import Fluent

Package.swift

import PackageDescription
letpackage=Package(
name:"FluentApp",
dependencies:[.Package(url:"https://github.com/tannernelson/fluent.git", majorVersion:0)])

Drivers

Fluent currently supports SQLite. Support for MySQL, and MongoDB are in the works.

Print Driver

By default, the PrintDriver is enabled. This driver will simply print out the commands you make to Fluent. This is only useful for development of Fluent.

SQLite

Start by ensuring SQLite3 is installed on your machine. If you are on a Mac, it will already be installed. For Linux, simply run sudo apt-get install libsqlite3-dev.

Once SQLite3 is installed, add the Fluent SQLiteDriver to your project.

Package.swift

.Package(url:"https://github.com/tannernelson/fluent-sqlite-driver.git", majorVersion:0)

Then import the driver and set it as your default database driver.

import SQLiteDriver
Database.driver =SQLiteDriver()

You are now ready to use SQLite. The database file will be stored in Database/main.sqlite.

Models

Make your application models conform to the Model protocol to allow them to work with Fluent.

publicprotocolModel{
///The entities database identifier. `nil` when not saved yet.
varid:String?{get}
///The database table in which entities are stored.
staticvartable:String{get}
/**
This method will be called when the entity is saved. The keys of the dictionary are the column names
in the database.
*/
func serialize()->[String:String]init(serialized:[String:String])}

When your application models conform to the Model protocol, they gain access to the following helper functions.

extensionModel{publicfunc save()
public func delete()
public static func find(id:Int)->Self?}

Querying

Create an instance of the query builder by passing one of your application models that conforms to the Model protocol.

letquery=Query<User>()

Filters

You can filter by equivalence relations, as well is in/not in relations.

Compare

query.filter("age",.GreaterThan,21)
publicenumComparison{case Equals, NotEquals, GreaterThanOrEquals, LessThanOrEquals, GreaterThan, LessThan
}

Subset

query.filter("id", in:[1,2,3])
publicenumComparison{case In, NotIn
}

Results

Call .results for all of the results from the query, or .first for only the first result.

Delete

Call .delete to delete all rows affected by the query.

Save

Call .save(model: T), passing in an instance of the class used to instantiate the Query to save it. This performs the same function as calling .save() on the model itself.

Deploying

Fluent has been successfully tested on Ubuntu 14.04 LTS (DigitalOcean) and Ubuntu 15.10 (VirtualBox).

To deploy to DigitalOcean, simply

  • Install Swift 2.2
    • wget the .tar.gz from Apple
    • Set the export PATH in your ~/.bashrc
    • (you may need to install binutils as well if you see ar not found)
  • Clone your fork of the fluent-example repository to the server
  • cd into the repository
    • Run swift build
    • Run .build/debug/MyApp

My website http://tanner.xyz is currently running using Vapor and Fluent.

About

Simple ActiveRecord implementation for Swift

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Fluent

Fluent

Simple ActiveRecord implementation for working with your database in Swift.

  • Easy setup
  • Beautiful syntax
  • Generically typed

Getting Started

Clone the Example project to start making your application. If you are also looking for a web server, check out Vapor. It was built to work well with Fluent.

You must have Swift 2.2 or later installed. You can learn more about Swift 2.2 at Swift.org

Work in Progress

This is a work in progress, so don't rely on this for anything important. And pull requests are welcome!

Example

Using Fluent is simple and expressive.

iflet user =User.find(5){print("Found \(user.name)")
user.name ="New Name"
user.save()}

Underlying Fluent is a powerful Query builder.

letuser=Query<User>().filter("id", notIn:[1,2,3]).filter("age",.GreaterThan,21).first

Setup

Start by importing Fluent into your application.

import Fluent

Package.swift

import PackageDescription
letpackage=Package(
name:"FluentApp",
dependencies:[.Package(url:"https://github.com/tannernelson/fluent.git", majorVersion:0)])

Drivers

Fluent currently supports SQLite. Support for MySQL, and MongoDB are in the works.

Print Driver

By default, the PrintDriver is enabled. This driver will simply print out the commands you make to Fluent. This is only useful for development of Fluent.

SQLite

Start by ensuring SQLite3 is installed on your machine. If you are on a Mac, it will already be installed. For Linux, simply run sudo apt-get install libsqlite3-dev.

Once SQLite3 is installed, add the Fluent SQLiteDriver to your project.

Package.swift

.Package(url:"https://github.com/tannernelson/fluent-sqlite-driver.git", majorVersion:0)

Then import the driver and set it as your default database driver.

import SQLiteDriver
Database.driver =SQLiteDriver()

You are now ready to use SQLite. The database file will be stored in Database/main.sqlite.

Models

Make your application models conform to the Model protocol to allow them to work with Fluent.

publicprotocolModel{
///The entities database identifier. `nil` when not saved yet.
varid:String?{get}
///The database table in which entities are stored.
staticvartable:String{get}
/**
This method will be called when the entity is saved. The keys of the dictionary are the column names
in the database.
*/
func serialize()->[String:String]init(serialized:[String:String])}

When your application models conform to the Model protocol, they gain access to the following helper functions.

extensionModel{publicfunc save()
public func delete()
public static func find(id:Int)->Self?}

Querying

Create an instance of the query builder by passing one of your application models that conforms to the Model protocol.

letquery=Query<User>()

Filters

You can filter by equivalence relations, as well is in/not in relations.

Compare

query.filter("age",.GreaterThan,21)
publicenumComparison{case Equals, NotEquals, GreaterThanOrEquals, LessThanOrEquals, GreaterThan, LessThan
}

Subset

query.filter("id", in:[1,2,3])
publicenumComparison{case In, NotIn
}

Results

Call .results for all of the results from the query, or .first for only the first result.

Delete

Call .delete to delete all rows affected by the query.

Save

Call .save(model: T), passing in an instance of the class used to instantiate the Query to save it. This performs the same function as calling .save() on the model itself.

Deploying

Fluent has been successfully tested on Ubuntu 14.04 LTS (DigitalOcean) and Ubuntu 15.10 (VirtualBox).

To deploy to DigitalOcean, simply

  • Install Swift 2.2
    • wget the .tar.gz from Apple
    • Set the export PATH in your ~/.bashrc
    • (you may need to install binutils as well if you see ar not found)
  • Clone your fork of the fluent-example repository to the server
  • cd into the repository
    • Run swift build
    • Run .build/debug/MyApp

My website http://tanner.xyz is currently running using Vapor and Fluent.

About

Simple ActiveRecord implementation for Swift

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Fluent

Fluent

Simple ActiveRecord implementation for working with your database in Swift.

  • Easy setup
  • Beautiful syntax
  • Generically typed

Getting Started

Clone the Example project to start making your application. If you are also looking for a web server, check out Vapor. It was built to work well with Fluent.

You must have Swift 2.2 or later installed. You can learn more about Swift 2.2 at Swift.org

Work in Progress

This is a work in progress, so don't rely on this for anything important. And pull requests are welcome!

Example

Using Fluent is simple and expressive.

iflet user =User.find(5){print("Found \(user.name)")
user.name ="New Name"
user.save()}

Underlying Fluent is a powerful Query builder.

letuser=Query<User>().filter("id", notIn:[1,2,3]).filter("age",.GreaterThan,21).first

Setup

Start by importing Fluent into your application.

import Fluent

Package.swift

import PackageDescription
letpackage=Package(
name:"FluentApp",
dependencies:[.Package(url:"https://github.com/tannernelson/fluent.git", majorVersion:0)])

Drivers

Fluent currently supports SQLite. Support for MySQL, and MongoDB are in the works.

Print Driver

By default, the PrintDriver is enabled. This driver will simply print out the commands you make to Fluent. This is only useful for development of Fluent.

SQLite

Start by ensuring SQLite3 is installed on your machine. If you are on a Mac, it will already be installed. For Linux, simply run sudo apt-get install libsqlite3-dev.

Once SQLite3 is installed, add the Fluent SQLiteDriver to your project.

Package.swift

.Package(url:"https://github.com/tannernelson/fluent-sqlite-driver.git", majorVersion:0)

Then import the driver and set it as your default database driver.

import SQLiteDriver
Database.driver =SQLiteDriver()

You are now ready to use SQLite. The database file will be stored in Database/main.sqlite.

Models

Make your application models conform to the Model protocol to allow them to work with Fluent.

publicprotocolModel{
///The entities database identifier. `nil` when not saved yet.
varid:String?{get}
///The database table in which entities are stored.
staticvartable:String{get}
/**
This method will be called when the entity is saved. The keys of the dictionary are the column names
in the database.
*/
func serialize()->[String:String]init(serialized:[String:String])}

When your application models conform to the Model protocol, they gain access to the following helper functions.

extensionModel{publicfunc save()
public func delete()
public static func find(id:Int)->Self?}

Querying

Create an instance of the query builder by passing one of your application models that conforms to the Model protocol.

letquery=Query<User>()

Filters

You can filter by equivalence relations, as well is in/not in relations.

Compare

query.filter("age",.GreaterThan,21)
publicenumComparison{case Equals, NotEquals, GreaterThanOrEquals, LessThanOrEquals, GreaterThan, LessThan
}

Subset

query.filter("id", in:[1,2,3])
publicenumComparison{case In, NotIn
}

Results

Call .results for all of the results from the query, or .first for only the first result.

Delete

Call .delete to delete all rows affected by the query.

Save

Call .save(model: T), passing in an instance of the class used to instantiate the Query to save it. This performs the same function as calling .save() on the model itself.

Deploying

Fluent has been successfully tested on Ubuntu 14.04 LTS (DigitalOcean) and Ubuntu 15.10 (VirtualBox).

To deploy to DigitalOcean, simply

  • Install Swift 2.2
    • wget the .tar.gz from Apple
    • Set the export PATH in your ~/.bashrc
    • (you may need to install binutils as well if you see ar not found)
  • Clone your fork of the fluent-example repository to the server
  • cd into the repository
    • Run swift build
    • Run .build/debug/MyApp

My website http://tanner.xyz is currently running using Vapor and Fluent.

About

Simple ActiveRecord implementation for Swift

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Fluent

Fluent

Simple ActiveRecord implementation for working with your database in Swift.

  • Easy setup
  • Beautiful syntax
  • Generically typed

Getting Started

Clone the Example project to start making your application. If you are also looking for a web server, check out Vapor. It was built to work well with Fluent.

You must have Swift 2.2 or later installed. You can learn more about Swift 2.2 at Swift.org

Work in Progress

This is a work in progress, so don't rely on this for anything important. And pull requests are welcome!

Example

Using Fluent is simple and expressive.

iflet user =User.find(5){print("Found \(user.name)")
user.name ="New Name"
user.save()}

Underlying Fluent is a powerful Query builder.

letuser=Query<User>().filter("id", notIn:[1,2,3]).filter("age",.GreaterThan,21).first

Setup

Start by importing Fluent into your application.

import Fluent

Package.swift

import PackageDescription
letpackage=Package(
name:"FluentApp",
dependencies:[.Package(url:"https://github.com/tannernelson/fluent.git", majorVersion:0)])

Drivers

Fluent currently supports SQLite. Support for MySQL, and MongoDB are in the works.

Print Driver

By default, the PrintDriver is enabled. This driver will simply print out the commands you make to Fluent. This is only useful for development of Fluent.

SQLite

Start by ensuring SQLite3 is installed on your machine. If you are on a Mac, it will already be installed. For Linux, simply run sudo apt-get install libsqlite3-dev.

Once SQLite3 is installed, add the Fluent SQLiteDriver to your project.

Package.swift

.Package(url:"https://github.com/tannernelson/fluent-sqlite-driver.git", majorVersion:0)

Then import the driver and set it as your default database driver.

import SQLiteDriver
Database.driver =SQLiteDriver()

You are now ready to use SQLite. The database file will be stored in Database/main.sqlite.

Models

Make your application models conform to the Model protocol to allow them to work with Fluent.

publicprotocolModel{
///The entities database identifier. `nil` when not saved yet.
varid:String?{get}
///The database table in which entities are stored.
staticvartable:String{get}
/**
This method will be called when the entity is saved. The keys of the dictionary are the column names
in the database.
*/
func serialize()->[String:String]init(serialized:[String:String])}

When your application models conform to the Model protocol, they gain access to the following helper functions.

extensionModel{publicfunc save()
public func delete()
public static func find(id:Int)->Self?}

Querying

Create an instance of the query builder by passing one of your application models that conforms to the Model protocol.

letquery=Query<User>()

Filters

You can filter by equivalence relations, as well is in/not in relations.

Compare

query.filter("age",.GreaterThan,21)
publicenumComparison{case Equals, NotEquals, GreaterThanOrEquals, LessThanOrEquals, GreaterThan, LessThan
}

Subset

query.filter("id", in:[1,2,3])
publicenumComparison{case In, NotIn
}

Results

Call .results for all of the results from the query, or .first for only the first result.

Delete

Call .delete to delete all rows affected by the query.

Save

Call .save(model: T), passing in an instance of the class used to instantiate the Query to save it. This performs the same function as calling .save() on the model itself.

Deploying

Fluent has been successfully tested on Ubuntu 14.04 LTS (DigitalOcean) and Ubuntu 15.10 (VirtualBox).

To deploy to DigitalOcean, simply

  • Install Swift 2.2
    • wget the .tar.gz from Apple
    • Set the export PATH in your ~/.bashrc
    • (you may need to install binutils as well if you see ar not found)
  • Clone your fork of the fluent-example repository to the server
  • cd into the repository
    • Run swift build
    • Run .build/debug/MyApp

My website http://tanner.xyz is currently running using Vapor and Fluent.

About

Simple ActiveRecord implementation for Swift

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages