Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions Sources/App/Migrations/001/CreatePackage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@

import Fluent

struct CreatePackage: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
return database.schema("packages")
struct CreatePackage: AsyncMigration {
func prepare(on database: Database) async throws {
try await database.schema("packages")
// managed fields
.id()
.field("created_at", .datetime)
Expand All @@ -31,7 +31,7 @@ struct CreatePackage: Migration {
.create()
}

func revert(on database: Database) -> EventLoopFuture<Void> {
return database.schema("packages").delete()
func revert(on database: Database) async throws {
try await database.schema("packages").delete()
}
}
10 changes: 5 additions & 5 deletions Sources/App/Migrations/001/CreateProduct.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@

import Fluent

struct CreateProduct: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
return database.schema("products")
struct CreateProduct: AsyncMigration {
func prepare(on database: Database) async throws {
try await database.schema("products")
// managed fields
.id()
.field("created_at", .datetime)
Expand All @@ -33,7 +33,7 @@ struct CreateProduct: Migration {
.create()
}

func revert(on database: Database) -> EventLoopFuture<Void> {
return database.schema("products").delete()
func revert(on database: Database) async throws {
try await database.schema("products").delete()
}
}
10 changes: 5 additions & 5 deletions Sources/App/Migrations/001/CreateRecentPackages.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ import Fluent
import SQLKit


struct CreateRecentPackages: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
struct CreateRecentPackages: AsyncMigration {
func prepare(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}
return db.raw(
try await db.raw(
"""
-- v0
CREATE MATERIALIZED VIEW recent_packages AS
Expand All @@ -39,10 +39,10 @@ struct CreateRecentPackages: Migration {
).run()
}

func revert(on database: Database) -> EventLoopFuture<Void> {
func revert(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}
return db.raw("DROP MATERIALIZED VIEW recent_packages").run()
try await db.raw("DROP MATERIALIZED VIEW recent_packages").run()
}
}
10 changes: 5 additions & 5 deletions Sources/App/Migrations/001/CreateRecentReleases.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ import Fluent
import SQLKit


struct CreateRecentReleases: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
struct CreateRecentReleases: AsyncMigration {
func prepare(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}
return db.raw(
try await db.raw(
"""
-- v0
CREATE MATERIALIZED VIEW recent_releases AS
Expand All @@ -40,10 +40,10 @@ struct CreateRecentReleases: Migration {
).run()
}

func revert(on database: Database) -> EventLoopFuture<Void> {
func revert(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}
return db.raw("DROP MATERIALIZED VIEW recent_releases").run()
try await db.raw("DROP MATERIALIZED VIEW recent_releases").run()
}
}
10 changes: 5 additions & 5 deletions Sources/App/Migrations/001/CreateRepository.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@

import Fluent

struct CreateRepository: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
return database.schema("repositories")
struct CreateRepository: AsyncMigration {
func prepare(on database: Database) async throws {
try await database.schema("repositories")
// managed fields
.id()
.field("created_at", .datetime)
Expand Down Expand Up @@ -48,7 +48,7 @@ struct CreateRepository: Migration {
.create()
}

func revert(on database: Database) -> EventLoopFuture<Void> {
return database.schema("repositories").delete()
func revert(on database: Database) async throws {
try await database.schema("repositories").delete()
}
}
10 changes: 5 additions & 5 deletions Sources/App/Migrations/001/CreateSearch.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ import Fluent
import SQLKit


struct CreateSearch: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
struct CreateSearch: AsyncMigration {
func prepare(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}
return db.raw(
try await db.raw(
"""
-- v1
CREATE MATERIALIZED VIEW search AS
Expand All @@ -40,10 +40,10 @@ struct CreateSearch: Migration {
).run()
}

func revert(on database: Database) -> EventLoopFuture<Void> {
func revert(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}
return db.raw("DROP MATERIALIZED VIEW search").run()
try await db.raw("DROP MATERIALIZED VIEW search").run()
}
}
10 changes: 5 additions & 5 deletions Sources/App/Migrations/001/CreateVersion.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@

import Fluent

struct CreateVersion: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
return database.schema("versions")
struct CreateVersion: AsyncMigration {
func prepare(on database: Database) async throws {
try await database.schema("versions")
// managed fields
.id()
.field("created_at", .datetime)
Expand All @@ -37,7 +37,7 @@ struct CreateVersion: Migration {
.create()
}

func revert(on database: Database) -> EventLoopFuture<Void> {
return database.schema("versions").delete()
func revert(on database: Database) async throws {
try await database.schema("versions").delete()
}
}
10 changes: 5 additions & 5 deletions Sources/App/Migrations/002/CreateOwnerRepositoryIndex.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,23 @@ import Fluent
import SQLKit


struct CreateOwnerRepositoryIndex: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
struct CreateOwnerRepositoryIndex: AsyncMigration {
func prepare(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}
return db.raw(
try await db.raw(
"""
CREATE UNIQUE INDEX idx_repositories_owner_name
ON repositories (LOWER(owner), LOWER(name))
"""
).run()
}

func revert(on database: Database) -> EventLoopFuture<Void> {
func revert(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}
return db.raw("DROP INDEX idx_repositories_owner_name").run()
try await db.raw("DROP INDEX idx_repositories_owner_name").run()
}
}
16 changes: 7 additions & 9 deletions Sources/App/Migrations/002/CreateRepositoriesNameIndex.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,23 @@ import Fluent
import SQLKit


struct CreateRepositoriesNameIndex: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
struct CreateRepositoriesNameIndex: AsyncMigration {
func prepare(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}

// See https://github.com/SwiftPackageIndex/SwiftPackageIndex-Server/issues/176#issuecomment-637710906
// for details about this index
return db.raw("CREATE EXTENSION IF NOT EXISTS pg_trgm").run()
.flatMap {
db.raw("CREATE INDEX idx_repositories_name ON repositories USING gin (name gin_trgm_ops)").run() }
try await db.raw("CREATE EXTENSION IF NOT EXISTS pg_trgm").run()
try await db.raw("CREATE INDEX idx_repositories_name ON repositories USING gin (name gin_trgm_ops)").run()
}

func revert(on database: Database) -> EventLoopFuture<Void> {
func revert(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}
return
db.raw("DROP INDEX idx_repositories_name").run()
.flatMap { db.raw("DROP EXTENSION pg_trgm").run() }
try await db.raw("DROP INDEX idx_repositories_name").run()
try await db.raw("DROP EXTENSION pg_trgm").run()
}
}
14 changes: 7 additions & 7 deletions Sources/App/Migrations/003/UpdateRecentPackages1.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ import Fluent
import SQLKit


struct UpdateRecentPackages1: Migration {
struct UpdateRecentPackages1: AsyncMigration {
let dropSQL: SQLQueryString = "DROP MATERIALIZED VIEW recent_packages"

func prepare(on database: Database) -> EventLoopFuture<Void> {
func prepare(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}
Expand All @@ -43,11 +43,11 @@ struct UpdateRecentPackages1: Migration {
ORDER BY MAX(p.created_at) DESC
LIMIT 100
"""
return db.raw(dropSQL).run()
.flatMap { db.raw(updatedViewSQL).run() }
try await db.raw(dropSQL).run()
try await db.raw(updatedViewSQL).run()
}

func revert(on database: Database) -> EventLoopFuture<Void> {
func revert(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}
Expand All @@ -66,7 +66,7 @@ struct UpdateRecentPackages1: Migration {
ORDER BY MAX(p.created_at) DESC
LIMIT 100
"""
return db.raw(dropSQL).run()
.flatMap { db.raw(oldViewSQL).run() }
try await db.raw(dropSQL).run()
try await db.raw(oldViewSQL).run()
}
}
14 changes: 7 additions & 7 deletions Sources/App/Migrations/003/UpdateRecentReleases1.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ import Fluent
import SQLKit


struct UpdateRecentReleases1: Migration {
struct UpdateRecentReleases1: AsyncMigration {
let dropSQL: SQLQueryString = "DROP MATERIALIZED VIEW recent_releases"

func prepare(on database: Database) -> EventLoopFuture<Void> {
func prepare(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}
Expand All @@ -44,11 +44,11 @@ struct UpdateRecentReleases1: Migration {
ORDER BY MAX(v.commit_date) DESC
LIMIT 100
"""
return db.raw(dropSQL).run()
.flatMap { db.raw(updatedViewSQL).run() }
try await db.raw(dropSQL).run()
try await db.raw(updatedViewSQL).run()
}

func revert(on database: Database) -> EventLoopFuture<Void> {
func revert(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}
Expand All @@ -68,7 +68,7 @@ struct UpdateRecentReleases1: Migration {
ORDER BY MAX(commit_date) DESC
LIMIT 100
"""
return db.raw(dropSQL).run()
.flatMap { db.raw(oldViewSQL).run() }
try await db.raw(dropSQL).run()
try await db.raw(oldViewSQL).run()
}
}
18 changes: 7 additions & 11 deletions Sources/App/Migrations/004/UpdatePackageStatusNew.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,22 @@ import Fluent
import SQLKit


struct UpdatePackageStatusNew: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
struct UpdatePackageStatusNew: AsyncMigration {
func prepare(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}

return db.raw("ALTER TABLE packages ALTER COLUMN status SET DEFAULT 'new'").run()
.flatMap {
db.raw("ALTER TABLE packages ALTER COLUMN status SET NOT NULL").run()
}
try await db.raw("ALTER TABLE packages ALTER COLUMN status SET DEFAULT 'new'").run()
try await db.raw("ALTER TABLE packages ALTER COLUMN status SET NOT NULL").run()
}

func revert(on database: Database) -> EventLoopFuture<Void> {
func revert(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}

return db.raw("ALTER TABLE packages ALTER COLUMN status DROP NOT NULL").run()
.flatMap {
db.raw("ALTER TABLE packages ALTER COLUMN status DROP DEFAULT").run()
}
try await db.raw("ALTER TABLE packages ALTER COLUMN status DROP NOT NULL").run()
try await db.raw("ALTER TABLE packages ALTER COLUMN status DROP DEFAULT").run()
}
}
14 changes: 7 additions & 7 deletions Sources/App/Migrations/005/UpdateRecentPackages2.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ import Fluent
import SQLKit


struct UpdateRecentPackages2: Migration {
struct UpdateRecentPackages2: AsyncMigration {
let dropSQL: SQLQueryString = "DROP MATERIALIZED VIEW recent_packages"

func prepare(on database: Database) -> EventLoopFuture<Void> {
func prepare(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}
Expand All @@ -44,11 +44,11 @@ struct UpdateRecentPackages2: Migration {
ORDER BY MAX(p.created_at) DESC
LIMIT 100
"""
return db.raw(dropSQL).run()
.flatMap { db.raw(updatedViewSQL).run() }
try await db.raw(dropSQL).run()
try await db.raw(updatedViewSQL).run()
}

func revert(on database: Database) -> EventLoopFuture<Void> {
func revert(on database: Database) async throws {
guard let db = database as? SQLDatabase else {
fatalError("Database must be an SQLDatabase ('as? SQLDatabase' must succeed)")
}
Expand All @@ -72,7 +72,7 @@ struct UpdateRecentPackages2: Migration {
ORDER BY MAX(p.created_at) DESC
LIMIT 100
"""
return db.raw(dropSQL).run()
.flatMap { db.raw(oldViewSQL).run() }
try await db.raw(dropSQL).run()
try await db.raw(oldViewSQL).run()
}
}
Loading
Loading